jQuery 使用数据 id 对元素进行排序

2024-03-01

我的 HTML 结构如下:

<div class="clist">
    <div data-sid=1></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=1></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=1></div>
</div>

我想将它们排序为:

<div class="clist">
    <div data-sid=1></div>
    <div data-sid=1></div>
    <div data-sid=1></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
</div>

我正在使用以下功能:

function sortContacts() {
    var contacts = $('div.clist'), cont = contacts.children('div');

    cont.detach().sort(function(a, b) {
        var astts = $(a).data('sid');
        var bstts = $(b).data('sid')
        return (astts > bstts) ? (astts > bstts) ? 1 : 0 : -1;
    });

    contacts.append(cont);
}

它没有按预期工作。

它在第一次运行时运行良好,但在添加新元素或更改后data-sid属性它不再起作用。

Demo: http://jsfiddle.net/f5mC9/1/ http://jsfiddle.net/f5mC9/1/

不工作?


您可以使用dataset存储所有自定义的属性data-*元素的属性,它返回一个字符串,如果您想将字符串转换为数字,您可以使用parseInt or +操作员。

$('.clist div').sort(function(a,b) {
     return a.dataset.sid > b.dataset.sid;
}).appendTo('.clist');

http://jsfiddle.net/CFYnE/ http://jsfiddle.net/CFYnE/

你自己的代码也可以工作:http://jsfiddle.net/f5mC9/ http://jsfiddle.net/f5mC9/

编辑:请注意IE10!及以下不支持.dataset属性,如果你想支持所有浏览器,你可以使用 jQuery 的.data()方法改为:

$('.clist div').sort(function(a,b) {
     return $(a).data('sid') > $(b).data('sid');
}).appendTo('.clist');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery 使用数据 id 对元素进行排序 的相关文章

随机推荐

  • 何时在模块方法中使用 self

    我的模块定义如下所示 module RG Stats def self sum a args a inject 0 accum i accum i end end 要使用此方法 我只需要包含此定义的文件 以便我可以执行以下操作 RG Sta
  • 从 CMake 文件执行 bash 命令

    我无法理解 CMake 我想要做的是在构建过程中执行以下 bash 命令 date F T gt timestamp 这会获取当前日期并将其写入文件 但是 我似乎无法使用 CMake 命令重现这个简单的操作 以下是我尝试过的一些事情 exe
  • 为什么默认参数后面允许有参数包?

    也许我遗漏了一些明显的东西 但是以下编译并运行 我不确定为什么 我知道this https stackoverflow com questions 27303283 clang vs gcc variadic template parame
  • 使用 Java 8 按属性对自定义对象列表进行分组

    我正在学习 lambda 的许多新功能 并想知道如何根据某些属性作为键按自定义对象列表进行分组 例如 我在 json 中有这样的对象列表 account checking source BOA account checking source
  • 是否有必要将“passHref”传递给具有 Semantic UI React 作为其子组件的 NextJS

    我一直在阅读 nextjs 文档 它说here https nextjs org docs api reference next link if the child is a function component that 如果孩子Link
  • 使用 AppCompat ActionBarActivity 更改状态栏颜色

    在我的一项活动中 我使用更改了工具栏颜色Palette 但在 5 0 设备上使用ActionBarActivity the status bar颜色是我的颜色colorPrimaryDark在我的活动主题中 所以我有两种截然不同的颜色 但看
  • 如何在Xcode lldb中打印超过256个数组元素?

    当我使用p or print它只会打印前 256 个元素 我怎样才能打印所有这些 您可以告诉 lldb 强制打印特定表达式求值的所有数组元素 lldb expr A array variable 您还可以通过运行以下命令来提高默认打印的最大
  • 如何在自组织图中关联回原始数据点

    我正在使用 R kohonen 包来实现 SOM 我发现将自组织映射产生的代码向量与原始数据点相关联时遇到麻烦 我尝试在训练过程中包含没有权重的标签 但结果令人难以理解 有没有办法在训练过程完成后从每个节点引用原始数据点 您将从中获得中心值
  • C 中的有符号除法

    我正在阅读书中有关 C 可移植性的部分C Traps and Pitfalls安德鲁 科尼格 关于整数除法 q a b r a b 如果a是负数 显然是提醒r可以是负数或正数 同时满足属性 q b r a 通常我会期望r如果股息为负a是负数
  • iOS:位置服务列表中缺少应用程序

    我的应用程序使用 iPhone 的 GPS 功能 之前运行良好 因为它提示用户允许使用位置服务 并且它显示在 设置 gt 位置服务 列表下 我从应用程序商店卸载并重新下载了该应用程序 但它们都不再起作用 该应用程序是同一版本 并且已经有一段
  • Flutter 中的 Sqlite,数据库资产如何工作

    我正在看这个 https github com tekartik sqflite blob master doc opening asset db md https github com tekartik sqflite blob mast
  • 更改 UIAlertView 的背景颜色?

    我想更改 UIAlertView 的背景颜色 但这似乎没有颜色属性 AlertView的背景是一张图片 你可以改变这个图像 UIAlertView theAlert UIAlertView alloc initWithTitle Atent
  • “似乎不是 NgModule 类。”更新到 Angular@15 后出错

    我正在尝试从以下位置更新Angular 13 to Angular 15 这样做之后 我收到了我完全不明白的编译错误 SharedModule does not appear to be an NgModule class src app
  • 在裸机 RPI 集群上使用 Metallb 的 LoadBalancer 安装后无法工作

    我正在摆弄我设置的 RPI 集群Kubeadm我想让 LoadBalancers 能够在集群上工作 节点的 IP 是静态的 并且设置为192 168 1 100 192 168 1 103对于主节点和工作节点 我已经使用官方网站文档安装了
  • asp.net OnClientClick 未呈现最初禁用的按钮

    我有一个禁用的 asp Button 稍后我用 JavaScript 启用它 像这样
  • s[i]^=32 如何将大写转换为小写?

    int main string s cout lt lt enter the string lt lt endl cin gt gt s for int i 0 i lt s length i s i 32 cout lt lt modif
  • Clojure 常量的约定、样式和用法?

    在 Clojure 中定义常量的最佳实践有哪些 包括样式 约定 效率等 例如 这是正确的吗 def PI 3 14 问题 Clojure 中常量应该大写吗 从风格上来说 它们应该在一侧还是两侧都有星号 字符 我应该注意哪些计算效率注意事项
  • 安卓白标

    我在一家公司工作 该公司在商店里有这个 foo 应用程序 该应用程序是我们硬件的助手 深受经销商的喜爱 我们确保该名称尽可能通用 以便我们的供应商能够将应用程序作为 他们的应用程序 进行营销 然而 一些经销商确实希望在应用程序上显示他们的确
  • 使用 stanford-nlp 对一些文本进行分块

    我正在使用 stanford core NLP 并使用此行加载一些模块来处理我的文本 props put annotators tokenize ssplit pos lemma ner parse dcoref 是否有一个模块可以加载以分
  • jQuery 使用数据 id 对元素进行排序

    我的 HTML 结构如下 div class clist div div div div div div div div div div div div div div div 我想将它们排序为 div class clist div di