如果没有其他监听器存在,如何添加Javascript EventListener?

5

我在Javascript编程领域还是个新手,所以请对我宽容点。:-)

我正在尝试向页面上的各种DOM元素添加eventListener。但是,一些我要添加事件的元素已经有了eventListener,我不想取代它;我只想将我的事件添加到没有与之关联事件的元素上。

我查阅了很多关于addEventListenerevent.StopPropagation、事件冒泡等相关内容,但还没有找到实现这一目标的方法。

是否有一种方法可以检测给定元素上的其他事件监听器,或者其他方法可以达到我想要的效果?

1个回答

3
您可以通过以下方式检查给定元素的on[event]属性是否设置:
if (typeof(document.getElementById("element-id").onclick) == "undefined") {
  // event undefined
}

if (typeof(document.getElementById("element-id").onclick) == "function") {
  // event defined
}

注意,如果使用 JavaScript 库(例如 jQuery)来定义事件(例如,使用 $("#element-id").click()),则此方法将无效。建议您使用jQuery,您可以轻松地使用它处理事件
编辑:嗯,据我所知,如果您也使用 addEventHandler,则此方法也不起作用。仅当您使用yourElement.onclick = anyFunction设置事件时才有效。

事实证明,我试图检测的事件是通过jQuery定义的(作为live()事件)。我确实可以使用jQuery,但是在jQuery.com网站上查找API信息时,我仍然没有看到有关检测预先存在的事件的任何信息,只有有关如何绑定自己的事件的信息。 - Hellion
哦,在这种情况下:https://dev59.com/_3M_5IYBdhLWcg3ww2Kb - raphael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接