问题的标题似乎具有误导性,因为我知道如果您想每次都引用 DOM,则不应使用变量。但是,情况有点不同。我创建了一个 SSE 脚本,它在第一次加载页面时可以完美运行,但由于页面内容不断变化,它并不总是有效。
var objts = $(".newsItem:first").data("ts");
var objid = $(".newsItem").data("id");
var ids = $.makeArray(objid); //variable of IDS
var ts = $.makeArray(objts); //variable of ts
var source=new EventSource("AJAX/get_feed_updates.php?ids=" + ids + "&ts="+ ts +"");
source.onmessage=function(event)
{
if (event.data > 0){
document.title = '(' + event.data + ') ' + originalTitle;
if (event.data == 1){// no plurals
$("#refreshFeed").fadeIn('slow').html(event.data + ' more news item.');
}
if (event.data > 1){ //plurals
$("#refreshFeed").fadeIn('slow').html(event.data + ' more news items.');
}
}
};
如您所见,第一个变量将数据放入数组中以放入EventSource
url。显然,这不会像页面那样继续更新,也不会source
。我试着把所有东西都串起来,而不是source.onmessage...
变成;
new EventSource("..." + $.makeArray($".newsItem")...).onmessage=function(event)
但这不起作用,因为事件源没有改变。我希望每次请求 SSE 源时都引用 DOM。我知道这不是做这些事情的好方法,但在这种情况下我看不到解决方法。