jQuery事件委托和附加的DOM对象

时间:2018-08-01 13:41:57

标签: javascript jquery events

我创建了一个可以多次克隆的元素。每个克隆都有一个删除按钮,可将其从DOM中删除。我在听父母的声音,以单击克隆的删除按钮,但是我只收到原始按钮的事件。没有检测到其他任何删除按钮的事件。

要克隆,我使用:

var $original = $(originalElementSelector);
$newCopy = $original.clone()
$original.after($newCopy);

我的听众是这样的:

$(parentElement).on('click', '[data-clone-remove]', onRemoveClicked)

原始元素是父元素的后代。如果我将其更改为$(document).on(...,那么它可以工作,但是它正在侦听整个文档中的事件,这不是我想要的。侦听器已附加在准备就绪的文档上,并且父级在那时肯定存在。页面加载时存在的第一个删除按钮可以正常工作,但其他按钮则没有。

知道我要去哪里哪里吗?

2 个答案:

答案 0 :(得分:0)

使用$original.clone(true)。它还克隆事件。 Source

答案 1 :(得分:0)

在进一步测试中,看起来好像是从DOM中删除了导致click事件冒泡失败的按钮。在remove上调度另一个事件并在父级中监听该事件很好。

可能与这里的答案有关

If you delete a DOM element, do any events that started with that element continue to bubble?