如果我在其上使用内联函数,如下面的代码,如何检查元素是否有事件监听器。因为我有一个函数可以调用函数并添加事件监听器,但它会导致重复事件监听器导致它触发一个函数两次。所以如何检查它,以便我可以阻止它添加一个事件监听器,如果它已经存在。谢谢! :D
for (var a = 0;a<formFieldInput.length;a++) {
if(formFieldInput[a].hasAttribute("name") && formFieldInput[a].attributes.title.value !== "Valid Until") {
formFieldInput[a].addEventListener("click",function(event) {
toggleFieldList(event,"show");
});
}
答案 0 :(得分:49)
没有JavaScript功能来实现这一目标。但是,您可以在添加侦听器时将布尔值设置为true
,并在删除时设置false
。然后在可能添加重复事件侦听器之前检查此布尔值。
可能重复:How to check whether dynamically attached event listener exists or not?
答案 1 :(得分:46)
今天在Chrome Dev Tools控制台上,您可以快速执行以下功能,以显示已附加到元素的所有事件侦听器。
getEventListeners(document.querySelector('your-element-selector'));
答案 2 :(得分:26)
你不需要。只需按照自己的意愿,可以随心所欲地拍打它。 MDN explains identical event listeners:
如果在同一个上注册了多个相同的EventListener EventTarget具有相同的参数,重复的实例是 丢弃。它们不会导致EventListener被调用两次,并且 不需要使用
removeEventListener
手动删除它们 方法