【发布时间】:2015-06-25 17:09:17
【问题描述】:
想象一些 DOM 元素:
<ul id="list">
<li data-index="3">Baz</li>
<li data-index="1">Foo</li>
<li data-index="2">Bar</li>
</ul>
如何在不使用 jQuery 的情况下使用 JavaScript 对这些元素进行排序?
类似于:
document.getElementById('list').sort(function(li) { return li.dataset.index; });
【问题讨论】:
-
尝试在网上搜索这个问题,除了一些 jQuery 的东西之外,你会发现没有任何内容可以涵盖这个问题。对我来说,这似乎是一个完全合理的问题。如果您有不同的感觉,请解释原因。
-
将对
li元素的引用放入一个数组(或将NodeList转换为一个),排序,然后按数组顺序将元素插入DOM……完成。 -
@CBroe,这涉及大量 DOM 流失,这对性能不利,尤其是在列表已经大部分排序的情况下。理想情况下,我想就地进行排序。
-
“就地”排序可能会更慢,您需要多次附加相同的元素。顺便提一句。我没有投反对票,但也许缺乏真正的尝试来解决这个问题导致投反对票。
标签: javascript dom dom-manipulation