如何使用javascript检查是否在元素上应用了事件?

时间:2015-03-19 11:30:01

标签: javascript

浏览网页和stackoverflow没有运气。

如何检查特定事件是否应用于特定元素之上。让我们说我这样做:

function addEvent(elem, event, fn) {
if (elem.addEventListener) {
    elem.addEventListener(event, fn, false);
} else {
    elem.attachEvent("on" + event, function() {
        return(fn.call(elem, window.event));   
    });
}

}

      addEvent(document, 'scroll', onScroll);

function onScroll() {console.log("scroll"}

如果我的事件绑定到文档,我如何动态检查?谢谢。

2 个答案:

答案 0 :(得分:0)

你在JavaScript"中说过"所以我猜你想在代码中这样做,而不是(比如说)在调试器或其他东西。

DOM并没有提供这样做的方法,我很害怕,所以除了设置处理程序之外,你不能做任何事情。

例如,您可以在元素中添加一个expando属性,data-*属性或类来标记它,以便稍后检查。

答案 1 :(得分:0)

你应该避免使用attachEvent,即使在旧的IE浏览器中(< 9):如果你必须支持它们,那么使用on[event]的事件系统的重新实现会更好properties - attachEvent有几个错误,例如上下文元素被破坏,侦听器的顺序是随机的等等。

说,您可以将event.target与当前this进行比较:

function onClick(event) {
  if (event.target === this) {
    console.log("original dispatcher");
  } else {
    console.log("inner elements")
  }
}

document.body.addEventListener("click", onClick, false);

如果您使用document.body.onclick设置侦听器,那也可以。