jquery首先按日期或文本排序

时间:2015-08-07 14:21:44

标签: jquery sorting

我有这个脚本来排序日期

  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>

现在我想在todate attr中对包含“now”的项目进行排序,然后先进行排序。我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

java.lang.ClassCastException: se.emilsjolander.stickylistheaders.WrapperView cannot be cast to com.wdullaer.swipeactionadapter.SwipeViewGroup 函数中,您可以检查sort是否等于$(a).find(".to-date").attr("data-todate"),如果是这种情况,则返回true。如果now等于$(b).find(".to-date").attr("data-todate"),则返回false。否则使用标准比较逻辑。

now

答案 1 :(得分:0)

这可以解决问题

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"));
    });

希望有所帮助