我有一个带有相同类列表项的无序动态列表。我想将相同的类列表项分组到主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>
答案 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)
试试这个,
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;