我们正在使用JQuery 1.4.4,由于某些原因无法升级。
我需要获取元素的所有事件处理程序,以便我可以解除绑定并稍后重新绑定它们。像这样:
var event_handlers = obtainAllEvenHandlers($('#elem'));
$('#elem').unbind();
...
// Do many things
...
...
for(...) { // Or $.each(event_handlers, ...function() {
// Note 1: How to obtain the event handler?
var event_handler = getEventHandler($(this)); // Or just $(this)?
// Note 2: How to obtain the event from event handler? To know if blur, click, etc
var e = getEventFromEventHandler($(this));
$('#elem').bind(e, event_handler);
}
另外,如何从事件处理程序中知道事件e
以便稍后再绑定它们?请参阅注1 和注2 。
$('#elem').bind(e, event_handler);
如果您需要更多信息,请在评论中告诉我。
答案 0 :(得分:1)
试试这个: -
jQuery('#elem').data( "events" );
$('..').data('..')
的结果将是包含事件的对象。
OR(因为您使用的是较旧的jquery版本),请尝试以下操作:
$.each($("#elem").data("events"), function(i, event) {
alert(i);
$.each(event, function(j, h) {
alert(h.handler);
});
});
为了绑定事件,请使用.bind()
,如下所示: -
$('#elem').bind('eventname',function(){
// ... code
});