2010-01-08 29 views
4

我是一个Javascript编程领域的相对tyro,所以请对我轻松一点。 :-)仅当没有其他侦听器时才添加Javascript EventListener?

我想添加一个eventListener到页面上的各种DOM元素。但是,我将事件添加到的一些元素已经有一个eventListener,我不想取代它。我只想将我的事件添加到尚未与其关联的事件的元素。

我查看了一堆与addEventListener,event.StopPropagation,事件冒泡等有关的东西,但还没有想出任何方法来完成这一点。

有没有办法检测给定元素上的其他事件侦听器,或者其他方式来获取我想要的位置?

回答

1

如果给定元素的上[事件]属性是通过使用设置您可以检查:

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,你可以用handle events轻松使用它。

编辑:恩,好吧,如果你也使用addEventHandler,afaik也不起作用。它只适用于你使用yourElement.onclick = anyFunction

+0

设置你的事件事实证明,我试图检测的事件是通过jQuery(作为live()事件)定义的。我有自己的jQuery,但是通过jQuery.com网站上的API信息搜索,我仍然没有看到任何关于检测预先存在的事件的信息,只有关于如何绑定我自己的事件的信息。 – Hellion 2010-01-08 23:18:36

+0

哦,在这种情况下:http://stackoverflow.com/questions/1236067/test-if-event-handler-is-bound-to-an-element-in-jquery – raphael 2010-01-09 00:06:01

+0

谢谢,拉斐尔! – Hellion 2010-01-11 18:25:25

相关问题