1

我正在尝试将一定数量的元素包装在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>');
}

但是,它不起作用。我有 8div秒。它应该将 3 包装在一起,所以我应该有 3 个 new divs,前 2 个和 2 个在最后一个,因为只有 8 个div。但是,我div在第一个 new 中得到 3 个div,然后接下来的 2 个div根本没有被包裹,然后最后 3 个div被包裹在一个 new 中div。我不确定为什么它没有正确包装。您对如何做到这一点或什至更好的方法有任何想法吗?

4

1 回答 1

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" />'); 
}

示例:http: //jsbin.com/upaji

于 2010-01-10T09:46:42.830 回答