7

我了解现在已弃用“实时”功能。如何迁移以下内容以使用新的“on”?

$('a.action').live( "click", function (evt) {

        // Do stuff 

}

场景是 a.action 是动态创建的。我试过这个,无济于事:

$('a.action').on( "click", function (evt) {

        // Do stuff 

}
4

2 回答 2

10

如果您想要在添加事件处理程序时对象不必存在的实际.live()类型性能,那么您应该找到始终存在的所有元素的父 DOM 对象并像这样绑定到该对象:a.actiona.action.on()

$(parent selector).on('click', 'a.action', function (evt) {
    // Do stuff
});

该父级应尽可能靠近a.action对象以获得最大效率。因此,不希望绑定到document.

实际上,.live()不推荐使用的一个原因是它绑定到document对象,当有太多事件都流过一个对象时,很容易导致性能问题(事件调度性能受到影响)。

有关更多信息,请参阅我的其他相关答案:

jQuery .live() 与 .on() 方法在加载动态 html 后添加点击事件

jQuery 的新 on() 方法在性能上与 live() 方法相比如何?

所有 jquery 事件都应该绑定到 $(document) 吗?

于 2012-11-22T00:48:54.573 回答
2
$(document).on('click', 'a.action', function (evt) {
    // Do stuff
});
于 2012-11-22T00:46:47.770 回答