按李班排序项目符号列表

时间:2014-03-31 12:27:20

标签: javascript jquery html

我想根据类名对现有的ul li列表进行排序,并为每个类创建新的bullit列表

现在:

    <ul>
     <li class="a"></li>
     <li class="a"></li>
     <li class="b"></li>
     <li class="b"></li>
     <li class="b"></li>
     <li class="c"></li>
    </ul>

必须转换为:

<ul>
<li class="a"></li>
<li class="a"></li>
</ul>

<ul>
<li class="b"></li>
<li class="b"></li>
<li class="b"></li>
</ul>

<ul>
<li class="c"></li>
</ul>

4 个答案:

答案 0 :(得分:4)

您可以使用 .unwrap() .wrapAll()

$(function(){
    $('ul li').unwrap();
    var classes = ['a', 'b', 'c'];
    for (i = 0; i < classes.length; i++) {
        $('li.' + classes[i]).wrapAll('<ul></ul>');
    }
});

<强> Fiddle Demo

答案 1 :(得分:4)

使用map(基于Felix' solution):

$(function(){
    $('ul li').unwrap();
    ['a', 'b', 'c'].map(function(x) {$('li.' + x).wrapAll('<ul></ul>')});   
});

JsFiddle

答案 2 :(得分:0)

使用.unwrap().wrapAll()

 $('ul li').unwrap();
 $('.a').wrapAll('<ul></ul>')
 $('.b').wrapAll('<ul></ul>')
 $('.c').wrapAll('<ul></ul>')

<强> Demo

答案 3 :(得分:0)

无论li中的课程如何,这都适合你,即你不必知道前面的课程:

$(function () {
    var classes = new Array();
    var i = 0;
    $("li").each(function () {
        var currentClass = $(this).attr('class');
        if (classes.indexOf(currentClass) < 0) {
            classes[i] = currentClass ;
            i++;
        }
    });
    $('ul li').unwrap();
    for (i = 0; i < classes.length; i++) {
        $("." + classes[i]).wrapAll('<ul></ul>');
    }
});

Live example here