2012-07-17 117 views
2

我試圖找到我的問題的答案,但沒有成功 - 道歉,如果答案是非常明顯的:)。這是我正在努力解決的問題的前提。jQuery - 追加/替換事件偵聽器(當事件處理程序未知時)

  • 我有很多具有連接到它們(例如,點擊一個鏈接時執行的函數)
  • 我沒有訪問這些事件偵聽器,我也原生事件的UI元素(按鈕,超鏈接等)知道需要調用哪些函數/處理程序
  • 我想要做一個通用函數: o通過DOM橫向查找,找到諸如按鈕或超鏈接等UI元素,並附加其他偵聽器來執行相同的處理程序/功能(例如,我想附上「touchend」聽衆,其將執行與「點擊」事件相同的處理程序/功能)

有沒有辦法讓我以某種方式找出什麼事件處理程序(s)是用於特定的UI元素,然後通過.on()方法追加新的偵聽器相同的處理程序?

回答

0

你好即使你的困惑是有點開放式的,希望這有助於你的事業:)

閱讀本 - 事情你可能不知道的JQuery = http://james.padolsey.com/javascript/things-you-may-not-know-about-jquery/

您可以訪問綁定到所有的事件處理程序通過jQuery的事件存儲元素(或任何對象):

// List bound events: 
console.dir(jQuery('#elem').data('events')); 

// Log ALL handlers for ALL events: 
jQuery.each($('#elem').data('events'), function(i, event){ 
    jQuery.each(event, function(i, handler){ 
     console.log(handler.toString()); 
    }); 
}); 

// You can see the actual functions which will occur 
// on certain events; great for debugging! 

PS - 我會建議更好地瞭解你的DOM,但上面應該有所幫助。 B-)

+0

感謝mil,這似乎正是我正在尋找的 - 我會盡力實施這個解決方案今天或明天,讓你知道... – IvanS 2012-07-17 11:26:50

+0

@IvanS沒有probs!很高興它幫助你':)' – 2012-07-17 11:28:16

+0

對於任何人現在發現這一點,例如'jQuery v1.8','$(element).data(「events」)'[已被刪除](http://blog.jquery的.com/2012/08/09/jquery的-1-8發佈/)。 – jterry 2013-05-23 18:21:09