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

时间:2019-02-27 10:35:34

标签: javascript css xpages

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

现在,我想使链接被单击时显示为“已读”。

我已经定义了以下函数,该函数将注册在cookie中单击的链接ID,并更改链接的CSS color属性。

我可以将链接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();
  }); 

2 个答案:

答案 0 :(得分:2)

问题是,您无法按如下所述在选择器中使用:

How to get the element id in repeat control

所以您的代码必须看起来像这样:

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

祝你好运!

答案 1 :(得分:1)

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