jQuery on()用于动态添加的元素,使用stopPropagation()

时间:2014-09-28 19:49:18

标签: jquery

假设我们在页面上有一些动态添加 <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();
    // ...
});

第二个工作,第一个工作 - 没有。我尝试以与第一个相同的方式重写第二个函数 - 现在一切正常。

1 个答案:

答案 0 :(得分:0)

返回false;将在这个案子上做的伎俩。

与写作相同

event.preventDefault();
event.stopPropagation();

它将阻止事件的默认操作,并将阻止事件通过DOM冒泡:)