我需要拆分每2个li并将它们附加到div

时间:2011-01-26 15:58:33

标签: jquery

我有一个通用列表

 <ul>
    <li>list item1</li>
    <li>list item2</li>
    <li>list item3</li>
    <li>list item4</li>
    <li>list item5</li>
   <li>list item6</li>
</ul>

但我想做的是

<div class="list">
<ul>
    <li>list item1</li>
    <li>list item2</li>
 </ul>
</div>

<div class="list">
<ul>
    <li>list item3</li>
    <li>list item4</li>
 </ul>
</div>

<div class="list">
<ul>
    <li>list item5</li>
    <li>list item6</li>
 </ul>
</div>

我无法向li添加类的原因是这是一个在Business Catalyst中创建的动态菜单,我可以使用任何建议来处理这种情况的最佳方法。

Best Tara

3 个答案:

答案 0 :(得分:6)

示例: http://jsfiddle.net/jBYqt/2/

$('ul > li:nth-child(2n-1)').each(function() {
    $(this).next().add(this).wrapAll('<div class="list"><ul></ul></div>');
}).eq(0).closest('div').unwrap();

编辑:修改了我处理奇数<li>元素的答案。

答案 1 :(得分:1)

您可以将.slice()方法与.wrap()方法结合使用。

这样的事情可以解决问题。

$('li')
  .slice(2)
  .wrap('<div class="list" />');

当结果为奇数时,由你来处理。

答案 2 :(得分:0)

$(document).ready(function(){
    var f=true;
    var l;
    $('ul>li').each(function(){
      if (f)
      {
        l=$('<div class="list"><ul/></div>');
        $(this).appendTo($('ul',l));
      }else{
        $(this).appendTo($('ul',l));
        $(l).appendTo('body');
      }
      f=!f;
    });
    $('body>ul').remove()
});

http://jsfiddle.net/x9Rq5/