Использование jQuery 1.6. Данные () будут намного быстрее.
Первое:
Атрибуты данных извлекаются при первом обращении к свойству данных.доступ к нему, а затем к нему больше нет доступа или изменения (все значения данных затем сохраняются внутри в jQuery).
Это означает доступ к определенному значению данных после того, как первое является внутренним, поэтому поиск DOM или анализ не выполняется.значение должно быть сделано.
Секунда:
Каждая попытка конвертировать строку в значение JavaScript (это включает логические значения, числа, объекты, массивы и ноль),Строковое значение «100» преобразуется в число 100.
Теперь, когда значение хранится внутри как число, его также не нужно анализировать каждый раз.
Html
<div id="original">
<div data-timestamp="99">99</div>
<div data-timestamp="999">999</div>
<div data-timestamp="12">12</div>
<div data-timestamp="11">11</div>
<div data-timestamp="10">10</div>
<div data-timestamp="9">9</div>
<div data-timestamp="8">8</div>
<div data-timestamp="7">7</div>
<div data-timestamp="6">6</div>
<div data-timestamp="5">5</div>
<div data-timestamp="4">4</div>
<div data-timestamp="3">3</div>
<div data-timestamp="2">2</div>
<div data-timestamp="1">1</div>
<div data-timestamp="9999">9999</div>
</div>
Javascript
// sort based on timestamp attribute
myArray.sort(function (a, b) {
// convert to integers from strings
a = $(a).data("timestamp");
b = $(b).data("timestamp");
count += 2;
// compare
if(a > b) {
return 1;
} else if(a < b) {
return -1;
} else {
return 0;
}
});
Обновить пример jsFiddle
Уверены, что ваши циклы одинаковы, но гораздо меньше обработки в цикле.