Сортировка элементов неупорядоченного списка в Chrome - PullRequest
2 голосов
/ 03 апреля 2012

Я получил этот код для сортировки неупорядоченного списка по атрибуту title на месте.

$('#list li').sort(function(a,b) {
    return $(a).attr('title') < $(b).attr('title');
}).appendTo('#list');

Отлично работает в Firefox и IE, но не работает в Chrome, как только число элементов списка превышает 10 (см. http://jsbin.com/atoput/4)

Есть ли лучший / более простой / быстрый способ сортировки элементов на лету, и, возможно, у вас есть объяснение, что здесь делает Chrome?

1 Ответ

4 голосов
/ 03 апреля 2012

Используйте это:

$(document).ready(function() {
  var list  = $('#list');
  var items = list.children('li').get();
  items.sort(function(a, b) {
    var A = a.title;
    var B = b.title;
    return (A < B) ? -1 : (A > B) ? 1 : 0;
  });
  $.each(items, function(idx, itm) { list.append(itm); });
});

Предварительный просмотр можно увидеть здесь .

Если вы хотите, чтобы список сортировался по убыванию, переключайтесь вокруг знаков:

return (A > B) ? -1 : (A < B) ? 1 : 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...