对于将来的元素,jQuery.on 函数不推荐使用.live

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

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

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

这些都很好,但是我应该为我的初始选择器放入什么,它们有 #dataTable tbody吗?请注意,$.on()不工作。

94651 次浏览

我一发布这个问题就明白了... 对不起!

初始选择器可以是任何父元素。因为我的元素是主体的直接子元素,所以我可以使用 body作为选择器:

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

这种方法之所以有效,是因为这些事件将会浮出水面。这基本上是正常的气泡与一个额外的 .my_class过滤器。

JQuery 的文档显示您将替换

$(selector).live(event, handler)

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

此外,您还可以选择更精确地替换 $(document),并为元素的静态父元素使用选择器。例如,如果您有一个静态的 table元素,并且 tr元素被动态地添加到 DOM 中,那么您可以执行类似于 $('table#id').on('click', 'tr', ...)的操作

Http://api.jquery.com/live/