据我所知,“live”功能现已弃用。如何迁移以下内容以使用新的“on”?
$('a.action').live( "click", function (evt) {
// Do stuff
}
场景是a.action正在动态创建。我试过这个,但无济于事:
$('a.action').on( "click", function (evt) {
// Do stuff
}
答案 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?
答案 1 :(得分:2)
$(document).on('click', 'a.action', function (evt) {
// Do stuff
});