javascript排序的HTML元素
续 我想在不同的javascript排序的HTML元素,javascript,jquery,sorting,in-place,Javascript,Jquery,Sorting,In Place,续 我想在不同的中对元素进行排序(最终在中) 排序最好在适当的位置,而不是unwrap(),sort()和wrap HTML I IXX I I I I I I IXX I I I I I st st st javascript var sort_by_name = function(a, b) { return a.innerHTML.toLowerCase().localeCompare(b.innerHTML.toLowerCase()); } var list = $(".
中对元素进行排序(最终在
中)
排序最好在适当的位置,而不是unwrap()
,sort()
和wrap
HTML
I
IXX
I
I
I
I
I
I
IXX
I
I
I
I
I
st
st
st
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]);
}
var按名称排序=函数(a,b){
返回a.innerHTML.toLowerCase().localeCompare(b.innerHTML.toLowerCase());
}
var list=$(“.table>li”).get();
list.sort(按名称排序);
对于(变量i=0;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>
I
I
I
I
I
I
I
I
I
I
I
I
IXX
IXX
st
st
st
假设a、b是DOM元素,并且a在列表中的位置低于b(文档中的位置低于b)和value(a)>value(b),那么a和b将在文档中切换。不管a和b可能不是兄弟姐妹
要通过减少比较来加速任务,您可以执行以下操作:
$(".table").each(function(){
var list = $(this).children().get().sort(sort_by_name);
for (var i = 0; i < list.length; i++)
this.appendChild(list[i]);
});
要通过减少比较来加速任务,可以执行以下操作:
$(".table").each(function(){
var list = $(this).children().get().sort(sort_by_name);
for (var i = 0; i < list.length; i++)
this.appendChild(list[i]);
});
问题是什么?您有工作排序代码。你可以用这种类型的代码对任何一个列表进行排序。什么之间有什么逻辑?似乎是随机的…如果我在DOM中查询来自不同父级的元素,我希望它们在它们之间进行排序。你说的“就地”是什么意思?@Bergi,让a、b是DOM元素,a在列表中的位置低于b(在文档中的位置较低)和值(a)>值(b),那么a和b将在文档中切换。不管a和b可能不是兄弟,问题是什么?您有工作排序代码。你可以用这种类型的代码对任何一个列表进行排序。什么之间有什么逻辑?似乎是随机的…如果我在DOM中查询来自不同父级的元素,我希望它们在它们之间进行排序。你说的“就地”是什么意思?@Bergi,让a、b是DOM元素,a在列表中的位置低于b(在文档中的位置较低)和值(a)>值(b),那么a和b将在文档中切换。无论a和b可能不是同级。在第一个
表
中有一个元素具有IXX
文本,它需要移动到第二个表
更新。第二个代码按照您的要求在第一个表中执行
有一个带有IXX
文本的元素,它需要移动到第二个表中
更新。第二个代码满足您的要求
var $t = $(".table");
var list = $t.children().get().sort(sort_by_name);
$t.map(function() {
return {t:this, l:this.childNodes.length};
}).each(function(i, o) {
$(o.t).append(list.splice(0, o.l));
});