如何将事件从一个组复制到另一个组?
Html(请注意,.view
没有任何意外事件),
<div class="original">
<a href="#" class="edit">edit</a>
<a href="#" class="delete">delete</a>
<a href="#" class="view">view</a>
</div>
<div class="copy">
<a href="#" class="edit">edit</a>
<a href="#" class="delete">delete</a>
<a href="#" class="view">view</a>
</div>
jQuery的:
var parent = $('.original');
$(".edit", parent).click(function(){
return false;
});
$(".delete", parent).click(function(){
return false;
});
$.each($._data($('.edit:first').get(0), 'events'), function() {
// iterate registered handler of original
$.each(this, function() {
$('.edit:last').bind(this.type, this.handler);
});
});
有了这个,我只设法将.edit
的事件复制到另一个,但我有很多更多事件要复制到另一个组。
有什么想法吗?
修改
$("a").each( function(i, e) {
var $each = this;
//console.log($._data($(this).get(0), 'events'));
if($._data($(this).get(0), 'events') !== undefined){
$.each($._data($($each).get(0), 'events'), function() {
$.each(this, function() {
$("." + $each.className, copy).unbind(this.type, this.handler).bind(this.type, this.handler);
});
});
}
});
答案 0 :(得分:0)
根据jQuery's .clone() documentation,只有一个参数。因此,在您的情况下,要克隆一个群组并复制所有孩子的所有事件,您将执行以下操作:
$(".original a.edit").on("click", function () {
alert("edit clicked!");
});
$(".original a.delete").on("click", function () {
alert("delete clicked!");
});
$(".original a.view").on("click", function () {
alert("view clicked!");
});
var $clone = $(".whatever-your-container-is-called").clone(true);
$("#container").append($clone);
执行工作的位是.clone(true)
,其中参数名称为 withDataAndEvents 。