0

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/ )

2 番目のバージョンで元のバージョンが削除されるのはなぜですか?

4

1 に答える 1

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/

于 2013-02-15T16:05:29.690 に答える