javascript - 在jQuery中按数据事件日期对div进行排序
问题描述
我查看了与此相关的其他帖子,但要么我不知道如何实施他们的解决方案,要么看起来真的很乱。
基本上,我有大量带有data-event-date
标签的 div 和以格式呈现的日期d/m/Y
,我需要它们使用 JavaScript 将日期升序。
这是包含 div 列表的页面 https://sheffieldskillsacademy.com/locations/sheffield/jobs
<script>
(function($){
var container = $(".sort-list");
var items = $(".sort-item");
items.each(function() {
// Convert the string in 'data-event-date' attribute to a more
// standardized date format
var BCDate = $(this).attr("data-event-date").split("/");
var standardDate = BCDate[1]+" "+BCDate[0]+" "+BCDate[2];
standardDate = new Date(standardDate).getTime();
$(this).attr("data-event-date", standardDate);
});
items.sort(function(a,b){
a = parseFloat($(a).attr("data-event-date"));
b = parseFloat($(b).attr("data-event-date"));
return a>b ? -1 : a<b ? 1 : 0;
}).each(function(){
container.prepend(this);
});
});
</script>
任何帮助,将不胜感激
解决方案
你真的应该使用new Date(year, monthIndex, day)
格式来创建日期。空格分隔的字符串是非标准的 ISO 日期格式。
然后在排序功能中,您可以利用-
运算符自动将字符串转换为数字
var container = $(".sort-list");
var items = $(".sort-item");
items.attr('data-event-date', function(i, currVal) {
const dParts = currVal.split('/');
const date = new Date(dParts[2], dParts[1] - 1, dParts[0]);
// ^^^ individal arguments
return date.getTime();
});
$('button').click(function() {
items.sort(function(a, b) {
return $(a).data('event-date') - $(b).data('event-date');
});
container.html(items);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="sort-list">
<li class="sort-item" data-event-date="27/09/2019">27/09/2019</li>
<li class="sort-item" data-event-date="31/12/2020">31/12/2020</li>
<li class="sort-item" data-event-date="01/01/2016">01/01/2016</li>
</ul>
<button>Sort ascending</button>
推荐阅读
- python - 将默认包安装到 Conda 虚拟环境中
- java - Guava 的 Charmatcher 方法(如 javaDigit())的替代方案?
- android - 如果不使用接口获取 Firebase 文档,如何返回值?
- asp.net - 第二个 ASP.NET Web 应用程序在作为 IIS“嵌套”应用程序部署到主网站后挂起
- python - python - 如何用python将csv文件中的NA值替换为零?
- c++ - C++中的小数点和类
- sql - 计划导入 csv 到 SQL Server 2014 Express 版本
- javascript - 将字符串与数组匹配
- css - 如何设置宽度:100% 以匹配第一个容器
- symfony - Symfony 4 - 自定义 GuardAuthenticator 没有设置记住我的 cookie