在一个新的div中包装元素

时间:2011-02-07 21:30:42

标签: jquery-selectors

我有以下html:


<div id="one">
    <div class="two">
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
        <div class="entry">
        Content here
        </div>
    </div>
</div>

在jQuery中,如果我将每3个元素包装在一个新的div中,如下所示,我该怎么做?


<div id="one">
    <div class="two">
        <div>
            <div class="entry">
            Content here
            </div>
            <div class="entry">
            Content here
            </div>
            <div class="entry">
            Content here
            </div>
        </div>
        </div>
            <div class="entry">
            Content here
            </div>
            <div class="entry">
            Content here
            </div>
            <div class="entry">
            Content here
            </div>
        </div>
        <div>
            <div class="entry">
            Content here
            </div>
            <div class="entry">
            Content here
            </div>
            <div class="entry">
            Content here
            </div>
        </div>
    </div>
</div>

我试过切片和包装,这对我没有帮助。有任何想法吗?感谢你的帮助。

谢谢, 大号

4 个答案:

答案 0 :(得分:2)

var entries = $('#one > .two > div.entry');

entries.each(function(i) {
    if( i % 3 == 0 ) entries.slice(i,i+3).wrapAll('<div>');
});

http://jsfiddle.net/PZkSL/

答案 1 :(得分:0)

答案 2 :(得分:0)

如何使用类“two”获取div元素,并遍历它的子元素。当你发现第一个孩子使用$(firstChild).before('<div>');在第三个孩子上使用$(thirdChild)。after('</div>');只需通过使用此方法进行迭代。没有使用过.before()或.after()所以不确定它会如何发展。祝你好运。

答案 3 :(得分:0)

我只想写一个简单的for循环,例如:

var two = $(".two");
var elements = $(".entry");
var group = [];
for(var i=0;i<elements.length;i++) {
  var mod = i % 3;
  if(mod == 0 && group.length > 0) {
    var container = $('<div></div>');
    two.append(container);
    for(var j=0;j<group.length;j++) {
      container[0].appendChild(group[j]);
    }
    group = [];
  }
  group[mod] = elements[i];
}