jquery – 将一个元素的事件处理程序复制到另一个元素上?

前端之家收集整理的这篇文章主要介绍了jquery – 将一个元素的事件处理程序复制到另一个元素上?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何将事件处理程序从一个元素复制到另一个元素?例如:
$('#firstEl')
    .click(function() {
        alert("Handled!");
    })
;

// here's where the magic happens 
$('#secondEl').click = $('#firstEl').click; // ????

请注意,第二个元素正在不同的时间处理,当第一个元素获取其处理程序时,这意味着:

$('#firstEl,#secondEl').click(function() { ... });

…不行

解决方法

这个问题已经被回答了,但为了将来的参考:你可以通过迭代原始元素的事件并将其处理程序绑定到目标来复制它们.

>看下面编辑!

// iterate event types of original
$.each($('#original').data('events'),function() {
  // iterate registered handler of original
  $.each(this,function() {
    $('#target').bind(this.type,this.handler);
  });
});

当您无法控制原始元素(例如,当使用插件),并且只想克隆某个元素的行为时,这很方便.

编辑:在以后的jQuery版本中更改了元素事件处理程序的访问.这应该适用于较新的版本:

$.each($._data($('#original').get(0),'events'),this.handler);
  });
});

干杯

猜你在找的jQuery相关文章