jQuery - 追加/替换事件侦听器(当事件处理程序未知时)

时间:2012-07-17 10:56:14

标签: javascript jquery events event-handling

我试图找到问题的答案,但没有成功 - 如果答案非常明显,请道歉:)。以下是我试图解决的问题的前提。

  • 我有很多附加了原生事件的UI元素(按钮,超链接等)(例如,点击链接执行功能)
  • 我无权访问这些事件监听器,也不知道需要调用哪些函数/处理程序
  • 我想做一个通用函数,它会: o横向通过DOM,找到像按钮或超链接的UI元素,并附加其他执行相同处理程序/函数的侦听器(例如,我想附加“touchend”侦听器,它将执行与“click”相同的处理程序/功能“event)

有没有办法让我以某种方式找出用于特定UI元素的事件处理程序,然后通过.on()方法为相同的处理程序添加新的侦听器?

1 个答案:

答案 0 :(得分:0)

Hiya即使你的窘境有点开放,希望这有助于你的事业:)

阅读本文 - 您可能不了解的关于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!

P.S。 - 我建议更好地了解你的DOM,但上面应该有所帮助。 B-)