Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript排序的HTML元素_Javascript_Jquery_Sorting_In Place - Fatal编程技术网

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));
    });