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

时间:2012-11-22 00:44:14

标签: jquery

据我所知,“live”功能现已弃用。如何迁移以下内容以使用新的“on”?

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

        // Do stuff 

}

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

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

        // Do stuff 

}

2 个答案:

答案 0 :(得分:9)

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

.on()

父母应该尽可能接近$(parent selector).on('click', 'a.action', function (evt) { // Do stuff }); 个对象以获得最大效率。因此,不希望绑定到a.action

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

请参阅我的其他相关答案以获取更多信息:

jQuery .live() vs .on() method for adding a click event after loading dynamic html

How does jQuery's new on() method compare to the live() method in performance?

Should all jquery events be bound to $(document)?

答案 1 :(得分:2)

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