我正在构建一个与 Facebook 时间线功能非常相似的 HTML 列表。该列表最多包含 100 个项目,因此性能不是必需的。
然而,与 Facebook 的时间线不同,我的列表会非常动态。例如,不同的事件是实时到达的,并且取决于时间戳,可能会被添加到列表中,插入(我不能保证新事件一定会按时间顺序到达)甚至被删除。最重要的是,动画更新列表(添加/插入/删除)也会很好,但这是一个单独的问题。
我想知道一旦我用初始数据建立了列表(当然按时间排序),维护列表的最佳策略是什么?
谢谢。
我正在构建一个与 Facebook 时间线功能非常相似的 HTML 列表。该列表最多包含 100 个项目,因此性能不是必需的。
然而,与 Facebook 的时间线不同,我的列表会非常动态。例如,不同的事件是实时到达的,并且取决于时间戳,可能会被添加到列表中,插入(我不能保证新事件一定会按时间顺序到达)甚至被删除。最重要的是,动画更新列表(添加/插入/删除)也会很好,但这是一个单独的问题。
我想知道一旦我用初始数据建立了列表(当然按时间排序),维护列表的最佳策略是什么?
谢谢。
正如另一个答案中所建议的,data-time
在每个元素上都有一个属性。当新数据到达时,找到data().time
小于新时间的第一个元素。如果存在这样的元素,则使用element.before(newElement)
,否则使用container.append(newElement)
。这样列表将保持排序。
插图:http: //jsfiddle.net/JXLGR/
There is a nice jquery function for that here. You could implement a data-property on your html element:
<div data-time="1203812823873"></div>
Then you can actually call the function like this something like this:
$(".elements").sortElements(function(aElement0, aElement1) {
return aElement0.data("time") - aElement1.data("time");
})