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