2010-08-06 75 views
0

比方说,我们有这个不明 DIVjQuery的.append(函数(指数,HTML){...})问题

<div class="class-occurs-many-times-on-page">foo</div> 

,我们希望把后马上包含几十个其他不明DIV或几百SPAN元素:

<div class="a-class-that-occurs-many-times-on-page">foo</div> 
<div class="another-class-that-occurs-many-times-on-page"> 
     <span class="latin">lorem</span><span class="latin">ipse</span> 
     <span class="swedish-chef">føø</span><span class="swedish-chef">bår</span> 
     . 
     . 
     . 
     <span>...</span> 
</div> 

而且我们添加的第一个身份不明的DIV和要添加的SPAN容器DIV这样:

values = [{word: "lorem", cls: "latin"}, {word: "ipse", cls: "latin"}, 
{word:"føø",cls:"swedish-chef"}, {word:"bår",cls:"swedish-chef"}]; 

$("#" + someParentElement).append(
    $("<div></div>").addClass("a-class-that-occurs-many-times-on-page").text("foo").after(

      $("<div></div>").addClass("another-class-that-occurs-many-times-on-page").append(
       function(index, html){      
        // how to wrap each value in the values array in a span 
        // and inject each of those spans into this DIV? 

       } 
      ) 

    ) 


); 

这种方法是否可行?如果是这样,如果目标是将数组中的每个值都包含在.append()方法调用中,那么函数在值数组的每次迭代中都必须做些什么SPAN并将该跨度注入容器中?

感谢

回答

0
values = [{word: "lorem", cls: "latin"}, {word: "ipse", cls: "latin"}, {word:"føø",cls:"swedish-chef"}, {word:"bår",cls:"swedish-chef"}], 
len = values.length, 
$ctn = $('<div/>', { 
    class: 'another-class-that-occurs-many-times-on-page' 
}), 
buildarr = []; 

while(len--){ 
    buildarr.push('<span>'); 
    buildarr.push(values[len].word); 
    buildarr.push(values[len].cls); 
    buildarr.push('</span>'); 
} 

$ctn.append(buildarr.join('')).appendTo(document.body); 

这仅仅是一个建议,你一样可以完成这个任务种类。它假设我们必须填充阵列的顺序是不相关的(通过循环以最快的方式,reversed while)。如果订单很重要,请使用standard for loop

+0

谢谢,jAndy。这个建议很有帮助,但是在创建对$ ctn的引用时,您正在回避这个问题/问题:我想知道是否可以仅使用链接方法来完成此操作。 – Tim 2010-08-06 14:13:36