2010-01-08 48 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

相關問題