https://jsfiddle.net/d6rsq426/
出于某种原因,如果我添加一个克隆,它们都有不同的侦听器并单独工作。如果我复制(使用t按钮)现在存在的两个克隆,那么就是4.第四个克隆工作得很好,但第三个监听器控制第四个克隆。我试图找出相当一段时间,但找不到原因。看小提琴。对象中的此函数很可能是出现问题的地方。
duplicateSelected()
答案 0 :(得分:0)
做这样的事情:
var whichSelected = document.querySelectorAll(".selected");
for(var i = 0; i < whichSelected.length; i++) {
var clone = whichSelected[i].cloneNode(false);
(function(clone){
clone.addEventListener("click", function() {createOutline(clone)});
})(clone);
document.body.appendChild(clone);
}
我已更新您的JSFiddle以使其发挥作用。
这背后的原因是,当调用eventlistener时,clone就是迭代中的最后一个(for-loop
)。通过使用IIFE(Immidiately invoked function expression),事件触发时会保留clone
。