如何通过 XPages 中的 CSJS 访问重复控件中的链接?

How to access links within repeat control via CSJS in XPages?

在我的应用程序中,我在重复控件中显示 link。此 link 将打开一个对话框控件,显示重复中所选行的详细信息。

现在我想让 link 在被点击时显示为 "read"。

我定义了以下函数,它将注册在 cookie 中单击的 link ID 并更改 link 的 CSS 颜色 属性。

我可以将 link ID 存储在 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();
  }); 

您可能需要使用 x$ jQuery 选择器,因为您的 ID 包含冒号:https://openntf.org/XSnippets.nsf/snippet.xsp?id=x-jquery-selector-for-xpages.

问题是您不能按照此处所述在选择器中使用 :

因此您的代码必须如下所示:

// 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();
});

祝你好运!