所以我有类似的东西:
<ul id="list">
<li class="item">
<a>
<span class="name> name1 </span>
</a>
<a>
<span class="name> name2 </span>
</a>
<a>
<span class="name> name3 </span>
</a>
</li>
</ul>
如何按字母顺序按名称对此列表进行排序?亲切的问候
答案 0 :(得分:3)
试试这个插件:
http://james.padolsey.com/javascript/sorting-elements-with-jquery/
使用自定义比较器,如下所示:
$('li').sortElements(function(a, b){
return $(a).find('.name').text() > $(b).find('.name').text() ? 1 : -1;
});
答案 1 :(得分:1)
$(function() {
var names = elements = [];
$('.item .name').each(function(i, item) {
var name = $.trim($(this).text()) + '_' + i;
names[i] = name;
elements[name] = $(this).parent().remove().clone();
});
$.each(names.sort(),function(i, item) {
$('.item').append(elements[item]);
});
});
答案 2 :(得分:0)
对于简单的情况,您甚至不需要插件。这段代码对我有用,可以对链接列表进行排序:
function sortAlpha(a,b){
return $(a).find('a').text().toLowerCase() > $(b).find('a').text().toLowerCase() ? 1 : -1;
};
$('#thelist li').sort(sortAlpha).appendTo('#thelist');
不需要使用此方法的span标记。
(基本的想法不是我自己的,我是从某个地方复制过来的,但是不记得从哪里来。)