我想知道是否可以存储来自jQuery选择器的事件并将其应用到另一个选择器?
与$('selector')类似的东西.clone(true)但实际上只克隆事件而不是元素。
$('.class1').on('click.click1', function(e) {
alert('click 1')
});
$('.class2').on('click.click2', function(e) {
alert('click 2')
});
// pseudo
$('.class2') cloneEvents from $('.class1');
答案 0 :(得分:1)
用于此目的的快速且脏的jQuery插件
它使用内部方法$source
通过jQuery读取绑定到_data
的事件处理程序,迭代它们并将它们绑定到$target
。源自此snippet。
;(function($, doc, win) {
"use strict";
$.fn.cloneEventsFrom = function($source) {
var $this = $(this),
source = $source.get(0);
$.each($._data(source, 'events'), function() {
$.each(this, function() {
$this.bind(this.type, this.handler);
});
});
};
})(jQuery, document, window);
用法:点击此处:http://jsfiddle.net/marionebl/4Jv37/1/
var $target = $('.target'),
$source = $('.source')
$target.cloneEventsFrom($source);