我有这样一个脚本,它对日期进行排序
function (list) {
var $list = $(list);
var elems = $.makeArray($list.find("li"));
elems.sort(function(a, b) {
return new Date($(a).find(".to-date").attr("data-todate")) < new Date($(b).find(".to-date").attr("data-todate"));
});
$list.html(elems);
}和html
<ul id="theList">
<li><span class=".to-date" data-todate="2015-01">2015-01</span></li>
<li><span class=".to-date" data-todate="2017-01">2015-01</span></li>
<li><span class=".to-date" data-todate="now">now</span></li>
</ul>现在,我想对包含" Now“的项进行排序,以便首先排序。我怎样才能做到这一点?
发布于 2015-08-07 14:36:14
在您的sort函数中,您可以检查$(a).find(".to-date").attr("data-todate")是否等于now,如果是这样,则返回true。如果$(b).find(".to-date").attr("data-todate")等于now,则返回false。否则使用标准比较逻辑。
function (list) {
var $list = $(list);
var elems = $.makeArray($list.find("li"));
elems.sort(function(a, b) {
var $aStr = $(a).find(".to-date").attr("data-todate");
var $bStr = $(b).find(".to-date").attr("data-todate");
if ($aStr === 'now') {
return true;
} else if ($bStr === 'now') {
return false;
} else {
return new Date($aStr) < new Date($bStr);
}
});
$list.html(elems);
}发布于 2015-08-07 14:40:31
这能起作用
elems.sort(function(a, b) {
if (($(a).find(".to-date").attr("data-todate") === "now"))
return -1;
if (($(b).find(".to-date").attr("data-todate") === "now"))
return 1;
return new Date($(a).find(".to-date").attr("data-todate")) < new Date($(b).find(".to-date").attr("data-todate"));
});希望它能帮上忙
丹
https://stackoverflow.com/questions/31880032
复制相似问题