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', ...)
只要我发布这个问题,我就明白了…对不起!
最初的select器可以是任何父元素。 因为我的元素将是身体的直接的孩子,我可以使用body
作为select器:
$('body').on('click', '.my_class', function(event) { ...
这是有效的,因为事件将会泡起来。 这基本上是用.my_class
额外的filter正常冒泡的。