我有一个具有以" yy/mm/dd 00:00"的日期数据属性的项目列表
我将在该列表中添加列表项目,但我需要在排队中找到其正确的位置。因此,如果我有一个带有日期值的项目" 2012/04/22 21:30",那么我需要找到一个大于该列表值的第一个列表项目,然后在列表项目之前进行预处。
所以我将有我的列表项目
<li data-date="2010/04/05 20:40"></li>
<li data-date="2011/06/05 21:40"></li>
<li data-date="2012/08/05 22:40"></li>
<li data-date="2013/10/05"></li>
,然后我需要插入上面的列表
<li data-date="2012/04/22 21:30"></li>
如何用jQuery解决此问题?
您需要比较要插入的新 li
的属性 data-date
与dom中已经存在的列表项目。
$(function() {
var c = 0;
var a = '<li data-date="2011/06/05 21:40">2011/06/05 21:40</li>';
var aa = Date.parse($(a).attr('data-date'));
$('li').each(function(i, v) {
var aaa = ($(v).attr('data-date'));
var b = Date.parse(aaa);
if (b > aa) {
$(a).insertBefore(v);
c = 1;
return false;
}
})
if (!c) {
$('ul').append(a);
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li data-date="2010/04/05 20:40">2010/04/05 20:40</li>
<li data-date="2012/08/05 22:40">2012/08/05 22:40</li>
<li data-date="2013/10/05 22:40">2013/10/05 22:40</li>
</ul>
我认为您应该以这种方式处理要求,
- 调用所有节点,获取其值并存储在数组中。然后将所有日期时间值转换为秒。
- 根据您的要求,按ASC/DESC订单重新安排它们。
- 再次将值转换为原始格式,封装使用
<li></li>
标签和其他属性的值。 - 用较旧的 替换新生成的HTML。
我不确定这是这样做的最佳方法,但这是一个有效的解决方案。