我创建了一个可以多次克隆的元素。每个克隆都有一个删除按钮,可将其从DOM中删除。我在听父母的声音,以单击克隆的删除按钮,但是我只收到原始按钮的事件。没有检测到其他任何删除按钮的事件。
要克隆,我使用:
var $original = $(originalElementSelector);
$newCopy = $original.clone()
$original.after($newCopy);
我的听众是这样的:
$(parentElement).on('click', '[data-clone-remove]', onRemoveClicked)
原始元素是父元素的后代。如果我将其更改为$(document).on(...
,那么它可以工作,但是它正在侦听整个文档中的事件,这不是我想要的。侦听器已附加在准备就绪的文档上,并且父级在那时肯定存在。页面加载时存在的第一个删除按钮可以正常工作,但其他按钮则没有。
知道我要去哪里哪里吗?
答案 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?