Каков самый простой способ заказать <UL>/<OL> в jQuery?
Я ищу пример кода, который сортирует элементы списка в списке HTML по алфавиту. Может ли кто-нибудь помочь?
Вот пример списка для людей, с которыми можно работать:
<ul class="alphaList">
<li>apples</li>
<li>cats</li>
<li>bears</li>
</ul>
Ответы
Ответ 1
var items = $('.alphaList > li').get();
items.sort(function(a,b){
var keyA = $(a).text();
var keyB = $(b).text();
if (keyA < keyB) return -1;
if (keyA > keyB) return 1;
return 0;
});
var ul = $('.alphaList');
$.each(items, function(i, li){
ul.append(li); /* This removes li from the old spot and moves it */
});
Ответ 2
Для будущих гуглеров я нашел этот плагин очень полезным. Он имеет возможность определять порядок символов для неязыковых языков.
Старые версии (зависимые от jQuery)
$('.submenu > li').tsort({
charOrder: 'abcçdefgğhıijklmnoöprsştuüvyz'
});
Для символов на английском языке для определения
$('.submenu > li').tsort();
Текущая версия (независимая от jQuery) (29 марта 2016 г.)
Текущая версия tinysort теперь не зависит от jQuery. Чистый JavaScript. Я обновил jsfiddle для использования новой версии.
tinysort('.submenu > li', {
charOrder: 'abcçdefgğhıijklmnoöprsştuüvyz'
});
Demo
http://jsfiddle.net/ergec/EkScy/
Сайт
http://tinysort.sjeiti.com/
Ответ 3
Попробуйте следующее:
var elems = $('.alphalist li').detach().sort(function (a, b) {
return ($(a).text() < $(b).text() ? -1
: $(a).text() > $(b).text() ? 1 : 0);
});
$('.alphalist').append(elems);