jQuery .on函数为将来的元素,因为.live被弃用

我需要为将来的<div>元素的click事件添加一个处理程序,这个元素还不存在。 通常情况下,我会使用jQuery的.live函数来处理这个问题,但似乎现在不推荐使用.on

为了以这种方式使用.on方法,jQuerybuild议设置selector参数,以允许创build委托事件,并提供以下代码示例:

 $("#dataTable tbody").on("click", "tr", function(event){ alert($(this).text()); }); 

这一切都很好,但我为什么我的初始select器,他们有#dataTable tbody ? 请注意$.on()不起作用。

jQuery的文档显示你会replace

 $(selector).live(event, handler) 

 $(document).on(event, selector, handler). 

你也可以select更精确的选项,用元素的静态父元素replace$(document) 。 例如,如果你有一个静态table元素, tr元素被dynamic添加到DOM,你可以做一些像$('table#id').on('click', 'tr', ...)

http://api.jquery.com/live/

只要我发布这个问题,我就明白了…对不起!

最初的select器可以是任何父元素。 因为我的元素将是身体的直接的孩子,我可以使用body作为select器:

 $('body').on('click', '.my_class', function(event) { ... 

这是有效的,因为事件将会泡起来。 这基本上是用.my_class额外的filter正常冒泡的。