1
我试图在div
中包装一定数量的元素。问题是元素的数量可能会根据用户的输入而有所不同。所以元素的数量可以是2,3,4甚至更多。我有一个变量,告诉我应该包装多少个元素。所以,举例来说,我的页面可能有这样的:jquery添加或切片
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
现在我需要那些裹在另一div
根据我的变量。所以,如果我的变量举行的3的值,它是这样的:
<div class="testing">
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
</div>
<div class="testing">
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
</div>
我用这个代码:
$(this).add($(this).next())
.add($(this).next().next())
.wrapAll('<div class="testing"></div>');
但问题是,我需要知道多少元素将在那里。有没有一种动态的方式来做到这一点?我也看到了slice
功能,并试图使用它像这样:
for(var i=0;i<img_cnt;i+=img_row){
obj.children().slice(i,i+img_row).wrapAll('<div class="row"></div>');
}
它不工作,虽然。我有8 div
s。它应该一起包装3,所以我应该有3个新的div
s,前2个中有3个,最后2个,因为只有8个div
s。但是,我在第一个新的div
中获得了3 div
s,然后接下来的2 div
完全不被包装,然后最后的3 div
被包装在新的div
中。我不确定它为什么不包装它。你有什么想法如何做到这一点或甚至更好的方法?
感谢,似乎工作,但由于某种原因,它跳过第一个元素。有任何想法吗? – ngreenwood6 2010-01-10 09:52:49
确保你使用'i = 0',并且你还没有忘记'.next()'的地方。它应该运作良好,你可以请张贴一个最小的例子,如果这不起作用? (尝试http://jsbin.com/) – Kobi 2010-01-10 09:56:05
它的奇怪它在ie中工作,但不是在Firefox中。还注意到最后一张图片没有被包裹。我假设它可能是因为第一个不被包装。 – ngreenwood6 2010-01-10 10:03:19