0

jQuery オブジェクトの配列を、最後に作成された要素の「後」にあるすべての要素を持つ単一の jQuery オブジェクトに変換したいと思います。

HTML のテスト:

<div id="test">asd</div>
<a></a>

JS:

 var createElem = function(numElems) {
        var elems;
        for(var i=0; i<numElems; i+=1) {
            elems.push($("#test").clone());
        }

        return elems;

    };

    $("a").append(createElem(20)); // fails because its an array and not a jQuery object

要素を作成し、その中にすべてのクローンを配置できることを知っています。

 var createElem = function(numElems) {
        var elem = $('<div>');

        for(var i=0; i<numElems; i+=1) {
            elem.append($("#test").clone());
        }

        return elem;

    };

しかし、要素を返す前に、この親ラッパーから要素を取り出す必要があることに対処したくありません。

4

4 に答える 4

2

elems使用する前に配列として定義する必要がありますpush

var elems=[];

編集:<div>の有効な子ではありません<a>

于 2013-02-03T22:55:15.103 に答える
0
var createElem = function ( numElems ) {
    var $elems = $(),
        $test = $( '#test' ),
        index = 0;

    for ( ; index < numElems; index++ ) {
        $elems = $elems.add( $test.clone() );
    }

    return $elems;

};

それがどうなるか見てください。私は論理が正しいことをかなり確信しています、私は私の電話からこれをテストすることができないだけです。

于 2013-02-03T23:55:45.487 に答える
0

次のような追加を使用してみてください。

$("a").append(null,createElem(20));

jQueryのドキュメントによると(これも自分で試しました)

于 2013-02-03T23:03:05.040 に答える
0

配列を必ず初期化してください。

 var createElem = function(numElems) {
        var elems = [];
        for(var i=0; i<numElems; i+=1) {
            elems.push($("#test").clone());
        }

        return elems;

    };
于 2013-02-03T22:53:28.457 に答える