当前位置:  开发笔记 > 前端 > 正文

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

如何解决《将一个元素的事件处理程序复制到另一个元素上?》经验,为你挑选了1个好方法。

如何将事件处理程序从一个元素复制到另一个元素?例如:

$('#firstEl')
    .click(function() {
        alert("Handled!");
    })
;

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

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

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

......不行.



1> Christof..:

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

>请参阅下面的编辑!

// 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'), function() {
  // iterate registered handler of original
  $.each(this, function() {
    $('#target').bind(this.type, this.handler);
  });
});

干杯

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有