var sort_by_name = function(a, b) {
return a.innerHTML.toLowerCase().localeCompare(b.innerHTML.toLowerCase());
}
var list = $(".table > li").get();
list.sort(sort_by_name);
for (var i = 0; i < list.length; i++) {
list[i].parentNode.appendChild(list[i]);
}
$(".table").each(function(){
var list = $(this).children().get().sort(sort_by_name);
for (var i = 0; i < list.length; i++)
this.appendChild(list[i]);
});
……虽然不影响结果。
编辑:好的,我明白了:
var $t = $(".table");
var list = $t.children().get().sort(sort_by_name);
$t.map(function() {
return {t:this, l:this.childNodes.length};
}).each(function(i, o) {
$(o.t).append(list.splice(0, o.l));
});