繁体   English   中英

通过javascript中的dom元素存储事件监听器

[英]store event listeners from a dom element in javascript

是否可以存储元素中的所有事件侦听器以便在克隆元素后进行检索

//clone element makes event listeners stripped
var old_element=document.getElementById('dhtml_menu-1895');     
// var el= alleventlistenersfrom this element
var new_element = old_element.cloneNode(true);  
old_element.parentNode.replaceChild(new_element, old_element);  

 //some event actions 

 //give back original event listeners

我认为解决问题的真正方法是将事件绑定到DOM上的元素,这样就不必在创建元素时动态绑定事件。

所以我假设你有这样的事情:

<div class='parent'>
  <div class='element-to-replace'></div>
</div>

并且您正在代码中的某个位置.element-to-replace ,但是您在其上具有事件侦听器,如下所示:

document.querySelector('.element-to-replace').addEventListener('click', doSomething);

在这种情况下,您应该绑定到父元素,因为它永远不会改变并定位您的子元素。

document.querySelector('.parent').addEventListener('click', function(evt) {
  if (evt.target.className.includes('element-to-replace'))
    doSomething();
});

您可以这样做,也可以抽象出这些新元素的创建并将事件绑定代码放在功能块中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM