javascript – 使用AJAX轮询的jQuery .live()和.each()

我有一个简单的函数遍历页面,并使用.each()为每个匹配的元素添加一个CSS类.我也经常使用
AJAX更新页面,并且在第一次改变事物的AJAX更新后,该功能不再适用.

码:

$("div.col-conversation span.label-sticky").each(function () {
    $(this).closest('li').addClass('stickyhighlight');
});

我理解为什么它在第一个AJAX事件之后不起作用并且尝试使用.live()或.delegate()但是它似乎不能绑定非事件的东西(即你只能绑定点击,悬停等)使用这种方法,所以.each()不起作用.

是否有一种简单的方法来执行此功能,而不将其包含在AJAX成功回调中,并且不使用像livequery这样的插件,这可能有点过分了?

最佳答案 我认为这对你有用:

$('body').on('mychange','div.col-conversation span.label-sticky',function () {
   $(this).closest('li').addClass('stickyhighlight');
});

将此添加到您的ajax成功函数:

$('body').trigger('mychange');

或者如果你真的不想(或不能)修改ajax成功函数:

setInterval(function() {
   $('div.col-conversation span.label-sticky').each(function () {
       $(this).closest('li').addClass('stickyhighlight');
   });
},100);
点赞