我有一个包含元素创建日期和时间的属性的元素列表。
<ul>
<li data-clock="6/9/2017, 6:53:56 PM"></li>
<li data-clock="5/8/2017, 5:33:56 PM"></li>
<li data-clock="6/7/2017, 4:13:56 PM"></li>
</ul>
单击<button>
时,如何对以最老元素开头的元素进行排序?
发布于 2017-06-10 01:25:54
您需要选择所有的li
元素,使用.sort()
函数对它们进行排序,使用一个使用getAttribute('data-clock')
获取值的自定义函数,并使用(new Date(b.getAttribute('data-clock'))).getTime()
来比较日期:
$ul.find('li.unsorted').sort(function(a, b) {
return (new Date(a.getAttribute('data-clock'))).getTime() > (new Date(b.getAttribute('data-clock')).getTime()) ? -1 : 1;
})
演示:
var $ul = $('ul');
$("#sorter").click(function() {
$ul.find('li.unsorted').sort(function(a, b) {
return (new Date(a.getAttribute('data-clock'))).getTime() > (new Date(b.getAttribute('data-clock')).getTime()) ? -1 : 1;
})
.appendTo($ul);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="sorter">Sort</button>
<ul>
<li class="unsorted" data-clock="6/9/2017, 6:53:56 PM">6/9/2017, 6:53:56 PM</li>
<li class="unsorted" data-clock="5/8/2017, 5:33:56 PM">5/8/2017, 5:33:56 PM</li>
<li class="unsorted" data-clock="6/7/2017, 4:13:56 PM">6/7/2017, 4:13:56 PM</li>
</ul>
https://stackoverflow.com/questions/44468485
复制相似问题