返回元素的特定事件处理程序

时间:2011-09-20 14:19:21

标签: javascript jquery dom event-handling

给定Dom中的元素,是否可以返回特定事件的事件处理程序的名称?

例如,如果我选择一个元素

$("#container")

是否可以返回绑定到该元素的'keypress'事件处理程序?

3 个答案:

答案 0 :(得分:1)

这篇文章可能有所帮助: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!

答案 1 :(得分:0)

你可以使用:$('#container').attr('keypress')

答案 2 :(得分:0)

技术上是的,如果你正在使用一个命名函数(虽然这首先做起来有点奇怪......)。

// create a named function
function fooHandler() {}

// bind the named function
$("#container").keypress(fooHandler);

// retrieve the bound function from the data collection
$("#container").data('events').keypress[0].handler.name; // 'fooHandler'