我已经看到很多关于stackexchange和整个网络的建议,建议我不要使用jquery的live
函数。在这一点上,it is deprecated,所以我想摆脱它。此外,我试图将我的JavaScript保存在一个地方(不引人注目) - 所以我不是把它放在页面的底部。我不清楚如何重写代码以避免live
页面上尚不存在的元素。
在我网站的javascript文件中,我有类似的内容:
$(function() {
$('button.test').live('click', function(){
alert('test');
});
});
.on(
不起作用,因为该元素尚不存在。
按钮位于我在彩盒弹出模式窗口中加载的页面中。我不确定那个颜色框窗口在DOM中的确切位置,但我认为它接近顶部。
我可以使用委托并将其附加到文档中 - 但不是完全不使用live
来避免这种情况吗?
在这种情况下摆脱live
的最佳方法是什么?
答案 0 :(得分:3)
您可以使用.on()
- http://api.jquery.com/on/
$(document).on("click", "button.test", function() {
alert('test');
});
答案 1 :(得分:0)
如果你使用live(),你可以使用die()。
您也可以使用on()和off()。
他们做同样的事情,但建议使用。
答案 2 :(得分:0)
我最终避免在文档级别附加了live
和on
。方法如下:
将特定于页面中对象的所有jquery代码包装在函数的颜色框窗口中,如下所示:
function cboxready(){
...
}
此函数中包含的代码可以直接附加到对象(而不是附加在文档级别),因为只有在打开颜色框窗口时才能运行它。
然后在附加颜色框时使用colorbox的回调调用此函数,如下所示:
$('a.cbox').colorbox({
onComplete:function(){ cboxready(); }
});