检查元素是否具有事件侦听器。没有jquery

时间:2015-01-20 22:57:27

标签: javascript web

如果我在其上使用内联函数,如下面的代码,如何检查元素是否有事件监听器。因为我有一个函数可以调用函数并添加事件监听器,但它会导致重复事件监听器导致它触发一个函数两次。所以如何检查它,以便我可以阻止它添加一个事件监听器,如果它已经存在。谢谢! :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");
                });
            }

3 个答案:

答案 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手动删除它们   方法