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



假设,我们在一个页面上动态添加了几个<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中冒泡:)

最新更新