2013-06-05 51 views
-1

我需要具有相同类的DIV元素的数量,并且在加载时,Jquery将能够包装某些数量的这些DIV元素。在X数组上包装元素jquery

例子:

<div class="wrapper"> 

    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 

</div> 

然后让说,我想与另一个DIV每4个DIV元素包裹叫做childWrapper

的结果应该是:

<div class="wrapper"> 

    <div class="childWrapper"> 
     <div class="child"></div> 
     <div class="child"></div> 
     <div class="child"></div> 
     <div class="child"></div> 
    </div> 
    <div class="childWrapper"> 
     <div class="child"></div> 
     <div class="child"></div> 
     <div class="child"></div> 
     <div class="child"></div> 
    </div> 

</div> 

谢谢:)

+0

我知道我已经回答了这个,只是不记得如何找到它。 – Alnitak

+3

也许如果提问者发布他尝试的代码,它会帮助你记住。 –

+1

我看到'wrapAll()'答案即将推出! – tymeJV

回答

2

这将做到这一点:

function wrapDivs(number) { 
    var divs = $("div.wrapper > div.child"); 
    for(var i = 0; i < divs.length; i+=number) { 
     divs.slice(i, i+number).wrapAll("<div class='childWrapper'></div>"); 
    } 
} 

这个函数的参数是你在每个childWrapper

演示需要的div数量:http://jsfiddle.net/tymeJV/eqFQF/2/

+0

太棒了!像魅力一样工作..谢谢 –

0

为了总结每4个元素到另一个容器中,你可以做以下。

// for every direct .child inside .wrapper 
$(".wrapper > .child").each(function(i) { 
    var $this = $(this); 
    if(i % 4 == 0) { // if boundary element 
     $('<div class="wrap2" />') 
      .append($this.nextUntil(':eq('+(i+3)+')')) // append next 3 into the interim wrapper 
      .prepend($this).appendTo('.wrapper'); // prepend this element 
    } 
}); 

Working Demo