如何将jQuery对象数组转换为单个对象

时间:2013-02-03 22:50:43

标签: jquery

我想将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 个答案:

答案 0 :(得分:2)

在使用elems

之前,需要将push定义为数组
var elems=[];

编辑:<div>不是<a>

的有效儿童

答案 1 :(得分:0)

确保初始化阵列。

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

        return elems;

    };

答案 2 :(得分:0)

尝试使用这样的追加:

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

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

答案 3 :(得分:0)

var createElem = function ( numElems ) {
    var $elems = $(),
        $test = $( '#test' ),
        index = 0;

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

    return $elems;

};

看看情况如何。我很确定逻辑是正确的,我只是无法通过手机测试它。