我正在尝试创建自己的clone
函数,但遇到了问题。我可以自己使用jQuery的clone
函数,没有像这样的问题:`
$.prototype.cloneDumpingEvents = function () {
return $(this).clone();
};
(或者,在行动中看到它:http://jsfiddle.net/Shawn/dCm59/2/)
但是,如果我尝试使其适用于元素集合(添加each
),它会删除原始文件:
$.prototype.cloneDumpingEvents = function () {
return this.each(function() {
$(this).clone();
});
};
(或者,在行动中看到它:http://jsfiddle.net/Shawn/dCm59/3/)
为什么第二个版本会删除原始版本?
答案 0 :(得分:2)
因为您要返回原始而不是克隆。请改用:
$.fn.cloneDumpingEvents = function () {
var collection = $();
this.each(function() {
collection = collection.add( $(this).clone() );
});
return collection;
};
这是你的小提琴:http://jsfiddle.net/dCm59/4/
正如@FabrícioMatté在评论中指出的那样,.map
更短:
$.fn.cloneDumpingEvents = function () {
return this.map(function() {
return $.clone(this);
});
};
这是你的小提琴:http://jsfiddle.net/dCm59/7/