2013-02-08 210 views
2

我无法对列表元素中的元素进行分组。jquery单独列表元素的每四个子元素包装

对于excample我有三个列表元素:

<ul class="row"> 
<li class="item"> 
<!-- product name --> 
<div class="imglist"> 
<a href="#" title="image"><span class="txt">txt</span></a> 
</div> 
</li> 
</ul> 

<ul class="row"> 
    <li class="item"> 
    <!-- product name --> 
    <div class="imglist"> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
</div> 
</li> 
</ul> 

<ul class="row"> 
<li class="item"> 
<!-- product name --> 
<div class="imglist"> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
</div> 
</li> 
</ul> 

jQuery中我尝试这样做:

var divs = $("div.imglist > a"); 
for(var i = 0; i < divs.length; i+=4) { 
divs.slice(i, i+4).wrapAll("<div class='group'></div>"); 
} 

但现在的结果是:

<ul class="row"> 
<li class="item"> 
<!-- product name --> 
<div class="imglist"> 
<div class="group"> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a></div> 
</div> 
</li> 

<li class="item"> 
<!-- product name --> 
<div class="imglist"> 
<div class="group"> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a> 
<a href="#" title="image"><span class="txt">txt</span></a></div> 
</div> 
</li> 

<li class="item"> 
<!-- product name --> 
<div class="imglist"> 
<div class="group"> 
<a href="#" title="image"><span class="txt">txt</span></a></div> 
</div> 
</li> 
</ul> 

我的问题是,我想单独打包每个li.item

回答

2

迭代通过单独的每个列表:

$('.imglist').each(function(){ 
    var divs = $('a', this); 
    console.log(divs) 
    console.log(divs.slice(0,4)); 
    for(var i = 0; i < divs.length; i+=4) { 
     console.log(i) 
     divs.slice(i, i+4).wrapAll('<div class="wrapper"></div>'); 
    } 
}); 

演示:Fiddle

+0

非常感谢 – eyeonu 2013-02-12 12:38:25

1

如果我理解正确的话,你希望每个li.item分组:

$("ul li.item").each(function() { 
    $(this).find("a").wrapall("<div class='group'></div>"); 
}); 
+1

这是如何化妆4组? – 2013-02-08 13:08:02

+0

非常感谢,很有效 – eyeonu 2013-02-12 12:39:00

相关问题