【发布时间】:2012-10-19 18:39:40
【问题描述】:
继续javascript sort of HTML elements
我想对不同<ol>中的元素进行排序(最终在<div>中)
排序最好是就地而不是unwrap(),sort() 和wrap
HTML
<ol class="table" style="display: block; ">
<li class="menu__run">I</li>
<li class="menu__run">IXX</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
</ol>
<ol class="table">
<li class="menu__run">I</li>
<li class="menu__run">IXX</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__test">st</li>
<li class="menu__test">st</li>
<li class="menu__test">st</li>
</ol>
javascript
var sort_by_name = function(a, b) {
return a.innerHTML.toLowerCase().localeCompare(b.innerHTML.toLowerCase());
}
var list = $(".table > li").get();
list.sort(sort_by_name);
for (var i = 0; i < list.length; i++) {
list[i].parentNode.appendChild(list[i]);
}
我要找的结果是
<ol class="table" style="display: block; ">
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
</ol>
<ol class="table">
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">IXX</li>
<li class="menu__run">IXX</li>
<li class="menu__test">st</li>
<li class="menu__test">st</li>
<li class="menu__test">st</li>
</ol>
设 a,b 为 DOM 元素,并且 a 在列表中的位置低于 b(在文档中的位置较低)并且 value(a) > value(b) 然后 a 和 b 将在文档中切换。不管 a 和 b 可能不是兄弟姐妹。
【问题讨论】:
-
问题是什么?您有工作排序代码。您可以使用该类型的代码对任一列表进行排序。
-
什么去哪儿之间有什么逻辑?似乎随机...
-
如果我在 DOM 中查询来自不同父级的元素,我希望它们在它们之间进行排序。
-
“就地”是什么意思?
-
@Bergi,让 a,b 成为 DOM 元素,并且 a 在列表中的位置低于 b(在文档中的位置较低)并且 value(a) > value(b) 然后是 a 和 b将在文档中切换。不管 a 和 b 可能不是兄弟姐妹。
标签: javascript jquery sorting in-place