我正在尝试将点击处理程序绑定到传入的ajaxed内容.我以前用'直播'
$('#div').live('click', function(event) {
alert('I got clicked, Live style');
});
Run Code Online (Sandbox Code Playgroud)
但是现在随着我的网站变得越来越复杂,我意识到使用直播并让所有内容冒泡到DOM的顶端是多么疯狂.哪个不理想.
所以我开始使用on(),
$('#div').on('click', function(event) {
alert('I got clicked, On style');
});
Run Code Online (Sandbox Code Playgroud)
但我想念使用live()的事实我可以初始化一次点击处理程序并完成它,而不是每次加载新内容时重新初始化它们.这两个世界都是最好的吗?
除了在ajax回调函数中创建处理程序之外,还有更好的方法来"重新加载"点击处理程序以识别新的ajax内容吗?对我来说,这似乎非常可疑.什么是适当的方式来做到这一点?
从jQuery 1.7开始,以下.on()事件绑定等同于不推荐使用的live:
$(document).on('click', '#div', function(event) {
alert('I got clicked, On style');
});
Run Code Online (Sandbox Code Playgroud)
您还可以将事件绑定到DOM中的某个固定元素,这些元素不会重新生成,此功能与以下内容相同.delegate():
$('#parentofdiv').on('click', '#div', function(event) {
alert('I got clicked, On style');
});
Run Code Online (Sandbox Code Playgroud)
建议使用第二种形式尽可能缩小事件绑定的范围,以便于维护.
编辑:对于记录,您最初在帖子中所做的将是.bind()您的代码中呼叫的首选替代.
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |