Cha*_*aju 52 javascript dojo dom
我试过了
node.cloneNode(true); // deep copy
Run Code Online (Sandbox Code Playgroud)
它似乎没有复制我添加的事件监听器node.addEventListener("click", someFunc);
.
我们使用Dojo库.
Tim*_*own 66
cloneNode()
不复制事件侦听器.实际上,一旦附加了DOM,就无法通过DOM获取事件监听器,因此您的选择是:
Node.addEventListener()
来跟踪添加到每个节点的侦听器.例如,这就是jQuery clone()
方法能够使用其事件侦听器复制节点的方式.Ric*_*ood 19
这并不能准确回答问题,但如果用例允许移动元素而不是复制它,则可以将removeChild与appendChild一起使用,这将保留事件侦听器。例如:
function relocateElementBySelector(elementSelector, destSelector) {
let element = document.querySelector(elementSelector);
let elementParent = element.parentElement;
let destElement = document.querySelector(destSelector);
elementParent.removeChild(element);
destElement.appendChild(element);
}
Run Code Online (Sandbox Code Playgroud)