2011-07-15 50 views
2

有無論如何,我可以檢查一個現有的元素是否有附加的事件處理程序?假設一個簡單的javascript方法爲某個div.example(sans jquery)添加一個click事件,所以沒有屬性標記,那麼是否有可能使用jquery來捕獲附加的事件?我試圖用下面的代碼來達到這個目的無濟於事:使用jquery捕獲給定元素的所有事件

$('.example').each(function() { 
var newObj = $(this); 
$.each($(newObj).data("events"), function(i, event) { 
    alert(i); 
     $.each(event, function(j, h) { 
      alert(h.handler); 
     }); 
}); 

});

+2

有沒有必要做'$($(本))'。 – pimvdb

+0

您可以使用[此處]描述的方法獲取所有事件(以及關聯的處理程序)(http://stackoverflow.com/questions/1515069/jquery-check-if-event-exists-on-element)。 –

+2

另外,什麼是'$('#...')。每個'應該這樣做?希望每個文檔只有一個ID。 – pimvdb

回答

0

試試這個

$('#elm1').each(function() { 

$.each($(this).data("events"), function(i, event) { 
     alert(i); 
     $.each(event, function(j, h) { 
      alert(h.handler); 
     }); 
}); 
}); 
+1

jQuery的.data()特定於jQuery。它不會總是適用於「綁定使用jQuery」事件。 – DefyGravity

+0

是的,只有在使用jQuery庫時才應該使用它。 – ShankarSangoli

+0

我不知道.data()是特定於通過jQuery對象創建/附加的事件。感謝您及時的回覆。我會用普通的javascript來代替它。 – stavarotti

相關問題