jQuery组按类列出项目

时间:2016-01-29 08:07:09

标签: jquery group-by

我有一个带有相同类列表项的无序动态列表。我想将相同的类列表项分组到主ul中的一个ul。 如何对相同的班级列表项进行分组?

我想转换下面的动态列表

Exception

进入这个

<ul>
    <li class="a1">Some Content</li>
    <li class="a1">Some Content</li>
    <li class="a1">Some Content</li>
    <li class="a1">Some Content</li>
    <li class="a2">Some Content</li>
    <li class="a2">Some Content</li>
    <li class="a3">Some Content</li>
</ul>

2 个答案:

答案 0 :(得分:1)

这里有一个解决方案:

HTML:

<ul id="BaseNode">
    <li class="a1">A</li>
    <li class="a1">B</li>
    <li class="a1">C</li>
    <li class="a1">D</li>
    <li class="a2">E</li>
    <li class="a2">F</li>
    <li class="a3">G</li>
</ul>

jQuery的:

$(document).ready(function(){
    var lis = $("#BaseNode > LI");
    var as = { };

    $.each(lis, function(i, el){
        var c = $(el).attr("class");

        if(as[c] == null) {
            as[c] = new Array();
        }

        as[c].push(el);
    });

    $("#BaseNode").empty();
    $.each(as, function(i, el) {
        var li = $("<li>" + i.toUpperCase() + "</li>");
        var ul = $("<ul></ul>");

        $(ul).append(el);
        $(li).append(ul);
        $("#BaseNode").append(li);
    });
});

我还创建了jsFiddle,您可以在其中查看结果。我为方便起见向ID添加了UL

答案 1 :(得分:1)

试试这个,

&#13;
&#13;
var  	classes = {};

$('ul li').each(function() {
	classes[$(this).attr('class')] = $(this).attr('class');
});
 
$.each(classes,function(entry) {
   $("."+entry).wrapAll("<li>"+entry.toUpperCase()+"<ul></ul></li>");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<ul>
    <li class="a1">Some Content</li>
    <li class="a1">Some Content</li>
    <li class="a1">Some Content</li>
    <li class="a1">Some Content</li>
    <li class="a2">Some Content</li>
    <li class="a2">Some Content</li>
    <li class="a3">Some Content</li>
</ul>
&#13;
&#13;
&#13;