【发布时间】:2019-06-11 11:15:29
【问题描述】:
我希望将具有“活动”类的列表元素按字母顺序排列在列表顶部,列表的其余部分在下面单独排序。换句话说,
<li><label><span>zz</span></label></li>
<li class='active'><label><span>rr</span></label></li>
<li class='active'><label><span>bb</span></label></li>
<li><label><span>hh</span></label></li>
<li><label><span>ii</span></label></li>
<li class='active'><label><span>yy</span></label></li>
<li><label><span>kk</span></label></li>
<li><label><span>mm</span></label></li>
导致..
bb
rr
yy
hh
ii
kk
mm
zz
我认为我有正确的方法,但我似乎无法让它发挥作用。我认为与附加有关。任何人都可以帮助我克服最后的障碍吗? https://jsfiddle.net/Lcz47b9y/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="rootUl">
<li><label><span>zz</span></label></li>
<li class='active'><label><span>rr</span></label></li>
<li class='active'><label><span>bb</span></label></li>
<li><label><span>hh</span></label></li>
<li><label><span>ii</span></label></li>
<li class='active'><label><span>yy</span></label></li>
<li><label><span>kk</span></label></li>
<li><label><span>mm</span></label></li>
</ul>
.
var myli = $('#rootUl li.active label').children('span').detach().sort(sortByText);
$('#rootUl').append($(myli))
function sortByText(a, b) {
var first = $.trim($(a).text());
var second = $.trim($(b).text());
return first.localeCompare(second);
}
【问题讨论】:
-
是的,我有 - 但仍然无法提取列表的一部分并将其放回我想要的位置