2012-07-17 82 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