在我的应用程序中,我在重复控件中显示一个链接。此链接将打开一个对话框控件,显示重复中所选行的详细信息。
现在我想让链接在点击时显示为“已读”。
我已经定义了以下函数,它将注册在cookie中单击的链接ID并更改链接的CSS颜色属性。
我可以将链接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();
});
问题是你不能在你的选择器中使用:如下所述:
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();
});
祝好运!
你可能需要使用x $ jQuery选择器,因为你的id包含冒号:https://openntf.org/XSnippets.nsf/snippet.xsp?id=x-jquery-selector-for-xpages。