获取所有未知事件处理程序以进行解绑和重新绑定

时间:2014-12-06 08:18:31

标签: jquery

我们正在使用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);

如果您需要更多信息,请在评论中告诉我。

1 个答案:

答案 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
});