我试图在div
中包含一定数量的元素。问题是元素的数量可能会根据用户的输入而有所不同。因此元素的数量可以是2,3,4甚至更多。我有一个变量告诉我应该包含多少元素。所以,例如,我的页面可能有这个:
<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
秒。应该将3包裹在一起,所以我应该有3个新div
s,前2个为3,最后2个为2,因为只有8 div
个。但是,我在第一个新div
中获得了3 div
s,然后接下来的2个div
没有被包裹,然后最后3个div
被包裹在一个新的div
。我不确定为什么它没有正确包装。您对如何做到这一点甚至更好的方法有任何想法吗?
答案 0 :(得分:5)
您的代码无效,因为children
正在发生变化。尝试在常量集上使用slice
:
var all = $('.test');
for(i=0; i < all.length; i += img_row) {
all.slice(i, i + img_row).wrapAll('<div class="row" />');
}