Использовал несколько разных подходов и получил интересные результаты для разных браузеров. К сожалению, один браузер, который беспокоит как обычно, это тот, к которому у меня нет доступа. Буду признателен, если кто-нибудь сможет высказать замечания о том, как эти тесты работают в IE.
Нечего было многого добиться, полностью отказавшись от использования jQuery на Chrome , но пропуск jQuery дал гораздо лучшие результаты в других браузерах. Кроме того, по мере увеличения количества <li>
элементов, это помогает создать массив только с идентификаторами и отсортировать их. Когда сортировка завершена, массив отсортированного идентификатора можно использовать для получения данных узлов в правильном порядке, используя этот массив.
Сортировка массива элементов списка.
function sortListItems() {
var listItems = $("li").get();
listItems.sort(function(a, b) {
return a.id - b.id;
});
}
Сортировка массива идентификаторов.
function sortIDs() {
var listItems = $("li");
var ids = [];
for(var i = 0; i < listItems.length; i++) {
ids.push(listItems[i].id);
}
ids.sort(function(a, b) {
return a - b;
});
}
См. Результаты в http://jsfiddle.net/hwxmJ/4/. По некоторым причинам Safari отключился на 1000 элементов, в то время как другие - Chrome, Opera, Firefox работали нормально с 2000 элементами.