假设,我们在一个页面上动态添加了几个<div />
,我们需要将每个事件绑定一个点击事件。通常,我们会使用:
$(document).on( 'click', 'div', function() {
// ...
});
但我需要防止在点击这些div之后冒泡。所以我尝试使用:
$(document).on( 'click', 'div', function( e ) {
e.stopPropagation();
// ...
});
这不起作用,因为单击不会到达文档元素。我错过了live()函数,因为它可以将事件直接绑定到新元素,而不是文档。
那么,我们如何才能做到这一点呢?提前谢谢!
更新
我发现了问题。正如Ninsly所写,事件确实到达了文档元素。
在我的应用程序中有很多ajax,我有两个函数,它们绑定到这些div。
第一个有我在上面发布的代码:
$(document).on( 'click', 'div', function( e ) {
e.stopPropagation();
// ...
});
第二个是在div已经在页面上之后绑定的,所以我使用了:
$('div').click( function( e ) {
e.stopPropagation();
// ...
});
第二个有效,第一个无效。我试着用和第一个相同的方式重写第二个函数——现在一切都很好。
返回false;将在这个案子上发挥作用。
这和写是一样的
event.preventDefault();
event.stopPropagation();
它将阻止事件的默认操作,并将停止事件在DOM中冒泡:)