Как получить доступ к ссылкам в рамках повторного контроля через CSJS в XPages? - PullRequest
0 голосов
/ 27 февраля 2019

В моем приложении я отображаю ссылку в повторном элементе управления.Эта ссылка откроет диалоговое окно управления, которое отображает подробности для выбранной строки в повторе.

Теперь я хочу, чтобы ссылки выглядели как «прочитанные» при нажатии.

Я определилследующая функция, которая регистрирует идентификатор ссылки, нажатой в cookie, и изменяет свойство CSS-цвета ссылки.

Я могу сохранить идентификатор ссылки в cookie, но когда я пытаюсь найти его в DOM и изменитьCSS у меня не получается.Что я делаю не так?

// onclick
function saveId(id) {
    if ($.cookie('idCookie')) {
        $.cookie('idCookie', $.cookie('idCookie') + "," + id);
    } else {
        $.cookie('idCookie', id);
    }
}

// make all links colored
function setVisited() {
    if (null != $.cookie('idCookie')) {
        var idArray = $.cookie('idCookie').split(',');
        console.log("#ids:" + idArray.length);
        for (var x = 0; x < idArray.length; x++) {
            console.log("ID: " + x + "=" + idArray[x]);
            if ($('#' + idArray[x]).length) {
                //link exists
                $('#' + idArray[x]).css('color', 'red');
            }
        }

    }

  // assign saveId()
  $(document).ready(function() {
    $('a').click(function() {
      saveId($(this).attr('id'));
    });
    setVisited();
  }); 

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Проблема в том, что вы не можете использовать: в вашем селекторе, как описано здесь:

Как получить идентификатор элемента в повторяющемся управлении

, поэтому ваш код долженвыглядит примерно так:

// onclick
function saveId(id) {
    if ($.cookie('idCookie')) {
        $.cookie('idCookie', $.cookie('idCookie') + "," + id);
    } else {
        $.cookie('idCookie', id);
    }
}

// make all links colored
function setVisited() {
    if (null != $.cookie('idCookie')) {
        var idArray = $.cookie('idCookie').split(',');
        for (var x = 0; x < idArray.length; x++) {
            var link = $(document.getElementById(idArray[x])).get();
            if (link.length) {
                $(link).css('color', 'red');
            }
        }

    }
}

// assign saveId()
$(document).ready(function() {
    $('a').click(function() {
        saveId($(this).attr('id'));
    });
    setVisited();
});

удачи!

0 голосов
/ 27 февраля 2019

Вам, вероятно, нужно использовать селектор x $ jQuery, поскольку ваши идентификаторы содержат двоеточия: https://openntf.org/XSnippets.nsf/snippet.xsp?id=x-jquery-selector-for-xpages.

...