在旧日,我们曾经使用jQuery' .live()
(http://api.jquery.com/live/)来绑定未来事件,如果内容是通过AJAX重新加载的,示例
由于.live()
现已弃用(并已删除),因此jQuery建议使用.on()
(http://api.jquery.com/on/)。他们没有声明它适用于未来的事件。 顺便提一下,它没有处理通过AJAX重新加载的元素。
我的问题; .on()
以.live()
执行/过去的方式,.on()
是否正常工作,或者是否适用于未来事件?
我按如下方式致电$j('#header-cart').on('click', '.skip-link-close', function(e) {
... // change the world
});
:
{{1}}
感谢。
答案 0 :(得分:2)
当您使用.on()
.live()
直播
$('#ele_id').live('click', function() {
// event code
});
开启:
$(document).on('click', '#ele_id', function() {
// event code
});
答案 1 :(得分:1)
我觉得你以错误的方式打电话给$.on
!是的,它是.live()
的替代品,非常棒。
在#static-div
内有一个静态元素:.dynamic-link
和动态内容,例如<div>
。您需要以这种方式致电.on()
:
$("#static-div").on("click", ".dynamic-link", function(e){
e.preventDefault();
});
或者,如果你不确定,你可以这样做:
$(document).on("click", ".dynamic-link", function(e){
e.preventDefault();
});
答案 2 :(得分:1)
是的,它以非常类似的方式工作,不同之处在于您不将事件绑定到 future 元素,而是绑定到底层静态元素。 .on
使用事件传播/冒泡。
作为一个例子
<div class="static-element">
<div>
<!-- Content inserted from ajax call below -->
<p class="volatile-element">Example content</p>
</div>
</div>
将.on
绑定到静态元素并定位volatile元素。
$(".static-element").on("click", ".volatile-element", function(event) { ... });