如何使用javascript检查事件是否应用于元素

How to check if event is applied on an element with javascript?

本文关键字:是否 应用于 元素 事件 检查 何使用 javascript      更新时间:2023-09-26

浏览网页并堆叠失败。

如何检查特定事件是否应用于特定元素之上。假设我是这样做的:

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"}

如何动态检查我的事件是否绑定到文档?非常感谢。

您已经说过"在JavaScript中",所以我猜您想在代码中这样做,而不是在调试器或其他什么中。

恐怕DOM没有提供这样做的方法,所以除了设置处理程序之外,您还必须做一些事情。

例如,您可以将expando属性、data-*属性或类添加到元素中以对其进行标记,以便稍后进行检查。

您应该避免使用attachEvent,即使是在旧的IE浏览器中(<9):如果必须支持它们,最好使用使用on[event]属性的事件系统的重新实现–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来设置侦听器,这也是有效的。