将dom插入另一个dom作为变量

时间:2014-07-21 07:12:15

标签: javascript jquery html dom

我一直试图找到这样做:

stackUp = function(a){
    var stack = "";
    stack += "<div class='stackWrap'>";
    stack += "<div class='stackInfo'></div>";
    stack += "<div class='stackBox'>";
    stack += "</div>";
    stack += "</div>";
    for(var i=0;i<a.length;i++){ $(stack).find("stackBox").append(a[i].box); }
    return $(stack);
}

我想要做的就是将每个框从一个对象插入到“堆栈”中记住的“stackBox”div中,任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

在循环中,在每次迭代中,您都在创建一个新的jQuery对象并正在修改它。但是这些更改不会反映在字符串stack中。最后,您将从字符串stack创建一个新的dom结构并返回它,因此循环中的所有更改都不会反映在返回的对象中

stackUp = function (a) {
    var stack = "";
    stack += "<div class='stackWrap'>";
    stack += "<div class='stackInfo'></div>";
    stack += "<div class='stackBox'>";
    stack += "</div>";
    stack += "</div>";
    var $stack = $(stack);
    for (var i = 0; i < a.length; i++) {
        $stack.find(".stackBox").append(a[i].box);
    }
    return $stack;
}

答案 1 :(得分:1)

stackUp = function(a){
    var stackWrap = $("<div class='stackWrap'><div class='stackInfo'></div></div>")
    var stackBox = $("<div class='stackBox'></div>");

    for(var i=0;i<a.length;i++){
        stackBox.append(a[i].box);
    }

    stackWrap.append( stackBox );

    return stackWrap;
}