javascript 对 HTML 元素进行就地排序 [关闭]

2024-01-14

继续为javascript 对 HTML 元素进行排序 https://stackoverflow.com/questions/10186192/javascript-sort-of-html-elements

我想对不同的元素进行排序<ol>(最终在<div>) 排序最好应该就地进行,而不是unwrap(),sort() and 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可能不是兄弟姐妹。

http://jsfiddle.net/yqd3w/7/ http://jsfiddle.net/yqd3w/7/


要通过减少比较来加快任务速度,您可以执行以下操作:

$(".table").each(function(){
    var list = $(this).children().get().sort(sort_by_name);
    for (var i = 0; i < list.length; i++)
        this.appendChild(list[i]);
}​);

……虽然不影响结果。


编辑:好的,我明白了:

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));
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 对 HTML 元素进行就地排序 [关闭] 的相关文章

随机推荐

  • 固定表格标题仅水平和垂直滚动 CSS

    首先 是否可以仅使用 CSS 来实现这一点 我已经构建了一个可以水平和垂直滚动的表格 但是 我希望将标题封装在其容器内 而不是出现在包装器之外 这样 当您水平滚动时 相应的标题与其指定列的内容一致 使用不同的变体position absol
  • JBoss AS7自动加载JPA

    我有一个使用 JPA Hibernate 和 Google Guice 的应用程序 Guice 是在一个ServletContextListener它设置了EntityManagerFactory itself 该应用程序在 Tomcat
  • python:numpy 数组的矩阵列表?

    我有一个包含 numpy 矩阵的列表 无论如何 我可以将整个事情变成一个漂亮的干净的 numpy 数组吗 From matrix 1 matrix 1 99387871 matrix 2 53564618 matrix 4 39125807
  • 出现错误 mysqli::real_connect(): (HY000/2002): 当我尝试访问实时服务器上的项目时没有这样的文件或目录[重复]

    这个问题在这里已经有答案了 我已将我的网站上传到服务器 然后尝试访问 但代码点火器向我返回错误 我找不到任何答案 为什么会发生这种情况 我的配置数据库设置如下 db default array dsn gt hostname gt loca
  • JavaScript 中按名称读取 cookie 的最短函数是什么?

    在 JavaScript 中读取 cookie 的最短 准确且跨浏览器兼容的方法是什么 很多时候 在构建独立脚本 我不能有任何外部依赖项 时 我发现自己添加了一个读取 cookie 的函数 并且通常会依赖于QuirksMode orgrea
  • PostgreSQL ANSI、Python SQL、utf-8' 编解码器无法解码字节 0xa0

    我正在尝试在 python 中运行 sql 查询 在 python 2 中 这曾经有效 但现在我使用 python 3 这不再有效 我收到错误UnicodeDecodeError utf 8 codec can t decode byte
  • wx (Python) 小部件的 GUI 更新缓慢?

    考虑这个例子 在 python2 7 Ubuntu 11 04 上尝试过 import wx import wx lib agw knobctrl as KC started from http wxpython org Phoenix d
  • 如何使用 rxjs 定期检查实时连接?

    我使用 rxjs 来处理 websocket 连接 var socket Rx Observable webSocket wss echo websocket org socket resultSelector e gt e data 我想
  • 使用起订量模拟 HttpMessageHandler - 如何获取请求的内容?

    在决定我要发回测试的响应类型之前 有没有办法获取 http 请求的内容 多个测试将使用此类 每个测试将有多个 http 请求 此代码无法编译 因为 lambda 不是async并且有一个await在里面 我是异步等待的新手 所以我不知道如何
  • 使用 docker 在 AWS ray 集群上启动简单的 python 脚本

    我发现遵循 Ray 指南在 ray 集群上运行 docker 映像以执行 python 脚本非常困难 我发现缺乏简单的工作示例 所以我有最简单的docker文件 FROM rayproject ray WORKDIR usr src app
  • Java:高效的ArrayList过滤?

    我需要过滤 ArrayList 并删除找到的元素 作为 Java 的新手 我想知道实现此目的最有效的方法是什么 很重要 因为它在移动设备上运行 目前我这样做 We display only top level dealers parentI
  • 带两个参数的 MVC6 属性路由

    我已经对此进行了查看 并且没有任何与 MVC6 taghelper 锚标记相关的内容与满足多个参数的替代 HttpGet 方法相关 当然 您可以向 MVC6 锚标记帮助器添加多个参数 但是如何使用属性路由处理带有两个参数的第二个选项 我有两
  • 崩溃并终止原因 0xdead10cc

    请问这起事故的原因是什么 Incident Identifier A176CFB8 6BB7 4515 A4A2 82D2B962E097 CrashReporter Key f02957b828fe4090389c1282ca8e3839
  • Windows Phone 7 上带有盐的 SHA1

    我现在花了一些时间研究如何使用盐将密码编码为 SHA1 这是我在网络应用程序部分使用的代码 但它不适用于电话环境 public class Password private string password private int salt
  • Python unicode:如何测试 unicode 字符串

    我有一个这样的脚本 Python26 coding utf 8 import sys import xlrd import xlwt argset set sys argv 1 import wb xlrd open workbook ex
  • groovy 中的 get 与 getProperty

    令我惊讶的是 根据groovy的文档 groovy可以使用 getProperty 方法来获取对象的属性 因此 当我想更改获取特殊对象属性的行为时 我使用类别类来重写 getProperty 方法 然而 它不起作用 最后 我发现groovy
  • Python SSL:证书验证失败

    我在连接时遇到错误www mydomain com在使用 Windows 8 1 的相当新的机器上使用 Python 2 7 12 错误是SSL CERTIFICATE VERIFY FAILED on the ssl sock conne
  • 分割数据框

    打印 df A B 0 10 1 30 2 50 3 20 4 10 5 30 A B 0 10 1 30 A B 2 50 A B 3 20 4 10 5 30 你可以使用pd cut https pandas pydata org pa
  • 如何使用 C# 使用 DomainName 获取 AD 中的 OU 名称列表?

    我想从 Active Directory 获取 OU 列表 我只有域名 我如何使用 C 实现这一目标 尝试这样的事情 connect to RootDSE to find default naming context DirectoryEn
  • javascript 对 HTML 元素进行就地排序 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 继续为javascript 对 HT