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 = [];
        for(var i=0; i<numElems; i+=1) {
            elems.push($("#test").clone());
        }

        return elems;

    };
于 2013-02-03T22:53:28.457 回答
0

尝试像这样使用附加:

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

根据jQuery docs(我自己也试过)

于 2013-02-03T23:03:05.040 回答
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 回答