jQuery - 从live()迁移到on()

Jon*_*old 7 jquery

我知道"实时"功能现已弃用.如何迁移以下内容以使用新的"on"?

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

        // Do stuff 

}
Run Code Online (Sandbox Code Playgroud)

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

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

        // Do stuff 

}
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 9

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

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

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

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

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

jQuery .live()vs .on()方法,用于在加载动态html后添加click事件

jQuery的新on()方法如何与性能中的live()方法进行比较?

是应该将所有jquery事件绑定到$(文档)?