0

我在 stackexchange 和整个网络上看到了很多建议,建议我不要使用 jquery 的live功能。在这一点上,它已被弃用,所以我想摆脱它。此外,我试图将我的 javascript 保存在一个地方(不显眼)——所以我没有把它放在页面底部。我不清楚如何重写代码以避免live页面上尚不存在的元素。

在我网站的 javascript 文件中,我有这样的内容:

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

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

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

我可以使用委托并将其附加到文档中——但不使用它的重点不live就是避免这种情况吗?

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

4

3 回答 3

3

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

$(document).on("click", "button.test", function() {
    alert('test');
}); 
于 2012-07-24T23:02:12.750 回答
0

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

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

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

于 2012-07-24T23:03:51.040 回答
0

我最终在文档级别避免了两者live和附件。on就是这样:

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

function cboxready(){
...
}

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

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

$('a.cbox').colorbox({
    onComplete:function(){ cboxready(); }
});
于 2012-07-25T16:25:12.660 回答