如何替换页面加载时不存在的元素的jquery的实时

时间:2012-07-24 23:00:11

标签: colorbox jquery

我已经看到很多关于stackexchange和整个网络的建议,建议我不要使用jquery的live函数。在这一点上,it is deprecated,所以我想摆脱它。此外,我试图将我的JavaScript保存在一个地方(不引人注目) - 所以我不是把它放在页面的底部。我不清楚如何重写代码以避免live页面上尚不存在的元素。

在我网站的javascript文件中,我有类似的内容:

 $(function() {
    $('button.test').live('click', function(){
      alert('test');
    });
 });

.on(不起作用,因为该元素尚不存在。

按钮位于我在彩盒弹出模式窗口中加载的页面中。我不确定那个颜色框窗口在DOM中的确切位置,但我认为它接近顶部。

我可以使用委托并将其附加到文档中 - 但不是完全不使用live来避免这种情况吗?

在这种情况下摆脱live的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

您可以使用.on() - http://api.jquery.com/on/

$(document).on("click", "button.test", function() {
    alert('test');
}); 

答案 1 :(得分:0)

如果你使用live(),你可以使用die()。

您也可以使用on()和off()。

他们做同样的事情,但建议使用。

答案 2 :(得分:0)

我最终避免在文档级别附加了liveon。方法如下:

将特定于页面中对象的所有jquery代码包装在函数的颜色框窗口中,如下所示:

function cboxready(){
...
}

此函数中包含的代码可以直接附加到对象(而不是附加在文档级别),因为只有在打开颜色框窗口时才能运行它。

然后在附加颜色框时使用colorbox的回调调用此函数,如下所示:

$('a.cbox').colorbox({
    onComplete:function(){ cboxready(); }
});