给定Dom中的元素,是否可以返回特定事件的事件处理程序的名称?
例如,如果我选择一个元素
$("#container")
是否可以返回绑定到该元素的'keypress'事件处理程序?
答案 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'