javascript - 在 html 页面上对具有大量内容的 div 进行排序的最佳方法?
问题描述
下面是这个html代码结构。出于排序的目的,您可以将任何“id=”、类或数据属性添加到任何标签。每个块(其中的任何标签)都可以用其唯一的字符串标识符来补充,例如<div class="c1" id="uniqueid">
. 最初,页面是按未排序的顺序生成的。当您单击页面上的按钮时,这些 div 块<div class="c1">
应按值<span id="sort">...</span>
按升序、降序和与排序前完全相同的未排序顺序进行排序。它们必须被排序,当然它们在页面上的位置应该改变。块的数量<div class="c1">
可以多达 1000 个。
<div class="global">
<div class="c1">
<div class="c2">
<img src="https://www.example.com/i1.jpg">
<a href="/a1">a1</a>
</div>
<div class="c3">
<span>Text</span>
<a href="/a2">a2</a>
<a href="/a3">a3</a>
<div>
<div class="c4">Text <span id="sort">100</span> <img src="https://www.example.com/i2.jpg"></div>
<div class="c5">Text</div>
</div>
<div>
<div class="c6">Text <a href="/a4"><img src="https://www.example.com/i3.jpg"></a></div>
<div class="c7">500</div>
</div>
</div>
</div>
<div class="c1">
<div class="c2">
<img src="https://www.example.com/i1.jpg">
<a href="/a1">a1</a>
</div>
<div class="c3">
<span>Text</span>
<a href="/a2">a2</a>
<a href="/a3">a3</a>
<div>
<div class="c4">Text <span id="sort">50</span> <img src="https://www.example.com/i2.jpg"></div>
<div class="c5">Text</div>
</div>
<div>
<div class="c6">Text <a href="/a4"><img src="https://www.example.com/i3.jpg"></a></div>
<div class="c7">500</div>
</div>
</div>
</div>
<div class="c1">
<div class="c2">
<img src="https://www.example.com/i1.jpg">
<a href="/a1">a1</a>
</div>
<div class="c3">
<span>Text</span>
<a href="/a2">a2</a>
<a href="/a3">a3</a>
<div>
<div class="c4">Text <span id="sort">150</span> <img src="https://www.example.com/i2.jpg"></div>
<div class="c5">Text</div>
</div>
<div>
<div class="c6">Text <a href="/a4"><img src="https://www.example.com/i3.jpg"></a></div>
<div class="c7">500</div>
</div>
</div>
</div>
</div>
在这里进行排序的最佳方法是什么?我会很感激一个例子。
解决方案
下面的代码根据跨度的 int 值进行比较。您可以根据需要更改比较器功能。
const $c1_list = $('.c1').detach();
$c1_list.sort(function(el1, el2){
return parseInt($(el1).find('#sort').text()) > parseInt($(el2).find('#sort').text()) ? 1 : -1;
});
$('.global').append($c1_list);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="global">
<div class="c1">
<div class="c2">
<img src="https://www.example.com/i1.jpg">
<a href="/a1">a1</a>
</div>
<div class="c3">
<span>Text</span>
<a href="/a2">a2</a>
<a href="/a3">a3</a>
<div>
<div class="c4">Text <span id="sort">100</span> <img src="https://www.example.com/i2.jpg"></div>
<div class="c5">Text</div>
</div>
<div>
<div class="c6">Text <a href="/a4"><img src="https://www.example.com/i3.jpg"></a></div>
<div class="c7">500</div>
</div>
</div>
</div>
<div class="c1">
<div class="c2">
<img src="https://www.example.com/i1.jpg">
<a href="/a1">a1</a>
</div>
<div class="c3">
<span>Text</span>
<a href="/a2">a2</a>
<a href="/a3">a3</a>
<div>
<div class="c4">Text <span id="sort">50</span> <img src="https://www.example.com/i2.jpg"></div>
<div class="c5">Text</div>
</div>
<div>
<div class="c6">Text <a href="/a4"><img src="https://www.example.com/i3.jpg"></a></div>
<div class="c7">500</div>
</div>
</div>
</div>
<div class="c1">
<div class="c2">
<img src="https://www.example.com/i1.jpg">
<a href="/a1">a1</a>
</div>
<div class="c3">
<span>Text</span>
<a href="/a2">a2</a>
<a href="/a3">a3</a>
<div>
<div class="c4">Text <span id="sort">150</span> <img src="https://www.example.com/i2.jpg"></div>
<div class="c5">Text</div>
</div>
<div>
<div class="c6">Text <a href="/a4"><img src="https://www.example.com/i3.jpg"></a></div>
<div class="c7">500</div>
</div>
</div>
</div>
</div>
推荐阅读
- amazon-web-services - 如何让 AWS 网站显示和更新 S3 内容?
- c++ - 计算两组交集时出现分段错误
- grails - 将 Spring Boot 模块添加到 grails 项目
- mongodb - MongoDB spring boot 事务的预提交
- asp.net - 为什么我的项目要寻找 System.Web.Razor?
- tableau-api - 同时在 Tableau 站点上启用 SAML 和 OpenID 连接身份验证
- npm - 子文件夹中 npm 的最佳实践?
- c# - 从 C# 中的对象类型的变量中读取数组元素
- r - 使用 R 计算美国不同州的 HIV 病例百分比
- java - 以编程方式释放数据库 changeloglock