我目前使用sort函数根据计数值对div元素进行排序。以下是当前的实现方式:(我不确定它是否是一种有效的方法...)
$('#list .list_item').sort(sortDescending).appendTo('#list');
function sortDescending(a, b) {
return $(a).find(".count").text() < $(b).find(".count").text() ? 1 : -1;
};
我在考虑添加一个时间戳字段,但不确定如何扩展以支持此功能。
我有一个包含计数和日期/时间/时间戳的div元素列表。以下是html代码的示例:
<div id="list">
<div id="list_item_1" class="list_item">
<div class="count">5</div>
<div class="timestamp">1272217086</div>
<div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis ipsum rutrum metus rhoncus feugiat non vel orci. Etiam sit amet nisi sit amet est convallis viverra</div>
</div>
<div id="list_item_2" class="list_item">
<div class="count">5</div>
<div class="timestamp">1272216786</div>
<div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis ipsum rutrum metus rhoncus feugiat non vel orci. Etiam sit amet nisi sit amet est convallis viverra</div>
</div>
<div id="list_item_3" class="list_item">
<div class="count">10</div>
<div class="timestamp">1272299966</div>
<div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis quis ipsum rutrum metus rhoncus feugiat non vel orci. Etiam sit amet nisi sit amet est convallis viverra</div>
</div>
</div>
我希望按数量(递减)排序,然后按时间戳(递减 - 最新的在顶部)排序。
非常感谢您的帮助!谢谢 :)
$('#list .list_item).sort(sortBy(compareCount, compareTimestamp)).appendTo('#list');
- LyonappendTo
同样有效,你也可以将其移入插件或函数中。 - Anurag$("#list #page-1").sortBy('..', '..', '..');
。你期望有多少列表项/页面?如果不超过200-300个,我不会太在意优化。jQuery的结果集不是实时的,因此直接对该列表进行排序是可以的。但是,通过首先收集所有值到一个单独的数组中,然后对其进行排序,您可能会看到性能提升。我曾经在一个SO问题上做过类似的性能测试。如果我能找到链接,我会发出来。 - Anurag