寻找一个javascript解决方案来重新排序div

2023-12-11

我在页面中有一些div显示相同类型的不同内容,例如优惠,现在优惠有结束时间,还有发布时间,如果用户想按结束时间或发布时间排序,则应重新排序。

我正在寻找一个可以做到这一点的javascript解决方案,Ext JS或JQuery下的任何特定库都可以工作

这些 div 的样子如下

<div data-sortunit="1" data-sort1="40" data-sort2="156" data-sort3="1"
data-sort4="1317620220" class="item">
</div>

<div data-sortunit="2" data-sort1="30" data-sort2="116" data-sort3="5"
data-sort4="1317620220" class="item">
</div>

<div data-sortunit="3" data-sort1="10" data-sort2="157" data-sort3="2"
data-sort4="1317620220" class="item">
</div>

所以我希望能够根据 data-sortN 对这些 div 进行排序,N 是一个整数


编辑:好的,现在您已经提供了一些 HTML,下面是 javascript 代码,它将按所需的列号对特定 HTML 进行排序:

function sortByDataItem(containerID, dataNum) {
    var values = [];
    $("#" + containerID + " .item").each(function(index) {
        var item = {};
        item.index = index;
        item.obj = this;
        item.value = $(this).data("sort" + dataNum);
        values.push(item);
    });
    values.sort(function(a, b) {return(b.value - a.value);});
    var container = $("#" + containerID);
    for (var i = 0; i < values.length; i++) {
        var self = $(values[i].obj);
        self.detach();
        container.prepend(self);
    }
    return;
}


$("#sort").click(function() {
    var sortValue = $("#sortColumn").val();
    if (sortValue) {
        sortValue = parseInt(sortValue, 10);
        if (sortValue && sortValue > 0 && sortValue <= 3) {
            sortByDataItem("container", sortValue);
            return;
        }
    }
    $("#msg").show(1).delay(5000).fadeOut('slow');
});

您可以在 jsFiddle 中看到它的工作原理:http://jsfiddle.net/jfriend00/JG32X/


由于您没有向我们提供继续进行的 HTML,因此我制作了自己的 HTML 并向您展示了如何使用 jQuery 进行排序:

HTML:

<button id="sort">Sort</button><br>
<div id="productList">
    <div class="row"><div class="productName">Popcorn</div><div class="price">$5.00</div></div>
    <div class="row"><div class="productName">Peanuts</div><div class="price">$4.00</div></div>
    <div class="row"><div class="productName">Cookie</div><div class="price">$3.00</div></div>
    <div class="row"><div class="productName">Beer</div><div class="price">$5.50</div></div>
    <div class="row"><div class="productName">Soda</div><div class="price">$4.50</div></div>
</div>

Javascript(页面加载后运行):

$("#sort").click(function() {
    var prices = [];
    // find all prices
    $("#productList .price").each(function(index) {
        var str = $(this).text();
        var item = {};
        var matches = str.match(/\d+\.\d+/);
        if (matches && matches.length > 0) {
            // parse price and add it to the prices array
            item.price = parseFloat(matches[0]);
            item.row = $(this).closest(".row").get(0);
            item.index = index;
            prices.push(item);
        }
    });
    // now the prices array has all the prices in it
    // sort it using a custom sort function
    prices.sort(function(a, b) {
        return(a.price - b.price);
    });
    // now pull each row out and put it at the beginning
    // starting from the end of the prices list
    var productList = $("#productList");
    for (var i = prices.length - 1; i >= 0; i--) {
        var self = $(prices[i].row);
        self.detach();
        productList.prepend(self);        
    }
});

并且,一个 jsFiddle 显示了它的实际效果:http://jsfiddle.net/jfriend00/vRdrA/.

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

寻找一个javascript解决方案来重新排序div 的相关文章

随机推荐

  • JNI无法释放内存

    这是 JNI 的 C 代码 extern C JNIEXPORT jbyteArray JNICALL Java cn rilled encoder JNIEncoder encodeEncryptBuff JNIEnv env jobje
  • preg_split 逗号不在括号内

    测试字符串 Organic whole wheat bread Monterey Jack Cheese milk cheese culture salt Hormel Natural Ham salt turbinado sugar la
  • 处理字节顺序和文件的最常见方法 C++

    我一开始只是使用字符读取 写入 8 位整数到文件 不久之后 我意识到我需要能够处理的可能值不仅仅是 256 个 我对如何读取 写入 16 位整数到文件进行了一些研究 并了解了大端和小端的概念 我做了更多的研究 发现了一些不同的方法来处理字节
  • 如何在 AngularJS 中编写去抖动服务

    underscore 库提供了防抖功能 可以防止在设定的时间内多次调用某个函数 他们的版本使用了 setTimeout 我们如何在纯 AngularJS 代码中做到这一点 此外 我们可以利用 q 风格的 Promise 在去抖期之后从被调用
  • 泽西岛客户端 API 问题

    我正在编写一个调用 Web 服务的 Android 客户端 该服务是使用 JAX RS Jersey API 编写的 我还尝试在 android 端使用 Jersey Client API Client client Client crea
  • 区域设置构面构造函数被忽略

    The locale Facet构造函数 构造 other 的副本 但从参数 Facet 安装的 Facet 类型的 Facet 通常从参数的类型推导 除外 如果facet为NULL 则构造的语言环境是其他语言环境的完整副本 以这种方式构建
  • 春季批次。如何获取正在处理的元素的数量

    我们使用 Spring Batch 将 XML 文件的元素存储到数据库中 将元素插入数据库时 是否可以检索正在处理的元素的编号 澄清一下 这是我的工作配置
  • LSTM/GRU 自动编码器收敛

    Goal 尝试在多元时间序列数据集上运行 LSTM 自动编码器 X train 200 23 178 X val 100 23 178 X 测试 100 23 178 现在的情况 普通的自动编码器比简单的 LSTM AE 架构可以获得更好的
  • 更新 matplotlib 中的图形坐标

    我下面有一个将绘制球体的代码 它的比例由下式定义prop 我希望这样当按下按钮时prop的值更改为 5 并且图表也会相应调整 我该怎么办 我知道 tkinter 有 配置 它允许调整小部件设置 我正在寻找类似的东西 以便我可以重新配置我的情
  • 微前端/多存储库角度中的 Webpack 外部模块在构建时出现错误

    我创建了一个 Angular 项目来从其他正在运行的 Angular 项目调用微前端 我已使用 webpack config js 在我的应用程序中导入该模块 它在本地运行良好 但在生产构建中失败 当我运行 ng build 时 它会抛出异
  • 以编程方式将 .PFX 转换为 .PEM?

    我需要以编程方式从 MS 证书存储中提取证书及其私钥 并以某种方式将它们转换为 PEM 格式 我不想在命令行中使用 OpenSSL 因为我想将所有内容保留在内存中 避免使用文件 我可以使用 PFXExportCertStoreEx 将它们从
  • 如何编写自定义 servlet 上下文 init 方法

    我希望在 servlet 上下文初始化阶段使用 servletContext setAttributes 设置一些应用程序范围的变量 我怎样才能实现这一点 实施javax servlet SevletContextListener当java
  • 的原始用途? [关闭]

    Closed 这个问题是无关 目前不接受答案 我很好奇这样做的初衷
  • spring security 5.1 oauth 2,如何向用户身份验证uri添加附加参数

    我正在尝试集成外部 oauth 2 身份验证服务器和资源服务器 它们的配置需要一些额外的自定义参数 state 应该是 uuid TimeStamp accessType 并且 clientSecret 应该使用所有先前参数的组合作为数据进
  • 根据用户选择/提示检索 JSON 数据

    我试图让用户做出选择 并根据该选择深入研究 JSON 数据并显示所选信息 最终 我想在 html 中创建一个下拉选择 并在 Javascript 中创建一个事件监听器 然后进行检索 var userOcean prompt Will you
  • 同时访问变量

    我需要从多个回调 事件处理程序 中增加全局变量 这些回调可能会同时触发 我需要担心同时访问该变量吗 有没有像 C 中的 Interlocked Increment 类似的东西 JavaScript 中有 Interlocked Increm
  • 如何发送 HL7 ACK 消息作为 TCP 响应?

    我通过 TCP 连接接收 HL7 消息 这些消息始终是 ADT 类型 我使用 Kestrel 来监听这些消息 并使用 NHAPI 包来处理它们 我拿了David Fowler 的 Kestrel 示例代码设置 TCP 侦听器 所以基于这个示
  • 使用 Ajax 将 Javascript 变量传递给 PHP

    我目前正在开发一个使用 Ajax 的现有脚本 这是我以前从未使用过的 我在 javascript 文件中设置了一个变量 它从页面上的输入字段获取其值 我需要使用 Ajax 将其发布到我的 PHP 页面 但我不知道从哪里开始 我不确定您需要看
  • 不带控制器后缀的控制器

    根据我的设计要求 我想从控制器中排除后缀 Controller 并将其替换为 Resource 这样 FundsController 将成为 FundsResource 问题是 当我更改替换术语 控制器 时 我无法通过基于约定或属性路由路由
  • 寻找一个javascript解决方案来重新排序div

    我在页面中有一些div显示相同类型的不同内容 例如优惠 现在优惠有结束时间 还有发布时间 如果用户想按结束时间或发布时间排序 则应重新排序 我正在寻找一个可以做到这一点的javascript解决方案 Ext JS或JQuery下的任何特定库