微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 带有ajaxed内容的jQuery on()

我正在尝试将点击处理程序绑定到传入的ajaxed内容.我以前用’直播’

$('#div').live('click',function(event) {
        alert('I got clicked,Live style'); 
   });

但是现在随着我的网站变得越来越复杂,我意识到使用直播并让所有内容冒泡到DOM的顶端是多么疯狂.哪个不理想.

所以我开始使用on(),

$('#div').on('click',On style');   
   });

但我想念使用live()的事实我可以初始化一次点击处理程序并完成它,而不是每次加载新内容时重新初始化它们.这两个世界都是最好的吗?

除了在ajax回调函数中创建处理程序之外,还有更好的方法来“重新加载”点击处理程序以识别新的ajax内容吗?对我来说,这似乎非常可疑.什么是适当的方式来做到这一点?

解决方法

从jQuery 1.7开始,以下.on()事件绑定等同于不推荐使用的live:

$(document).on('click','#div',function(event) {
    alert('I got clicked,On style');
});

您还可以将事件绑定到DOM下面的某个固定元素,这些元素不会重新生成,此功能与.delegate()相同:

$('#parentofdiv').on('click',On style');
});

建议使用第二种形式尽可能缩小事件绑定的范围,以便于维护.

编辑:对于记录,您最初在帖子中执行的操作将是代码中.bind()调用的首选替代.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐