簡體   English   中英

.sort不在IE中工作(IE 9)

[英].sort not working in IE (IE 9)

我已經在這個工作了幾天。 我有一個動態創建表中的行的腳本。 最終輸出如下所示:

<table id="event-list">
    <tr id="event0" value="04/04/2000">
        <td>My Third Event</td>
        <td>Apr 4</td>
        <td>Omaha, NE</td>
        <td></td>
    </tr>
    <tr id="event4" value="04/24/2000">
        <td>USA Triathlon National Championships Collegiate Club</td>
        <td>Apr 24</td><td>Clemson, SC</td>
        <td></td>
    </tr>
    <tr id="event2" value="07/17/2000">
        <td>My Second Event</td><td>Jul 17</td>
        <td>Omaha, NE</td>
        <td></td>
    </tr>
    <tr id="event3" value="08/17/2000">
        <td>My Second Event</td>
        <td>Aug 17</td>
        <td>Ames, IA</td>
        <td></td>
    </tr>
    <tr id="event1" value="10/26/2000">
        <td>ZTA 5K For Breast Cancer Awareness</td>
        <td>Oct 26</td>
        <td>Omaha, NE</td>
        <td></td>
    </tr>
</table>

我使用以下腳本按日期對每一行進行排序:

$('#event-list tr').sort(function(a,b) {
       return new Date($(a).attr('value')) < new Date($(b).attr('value'));

}).each(function(){
       $('#event-list').prepend(this);

});

它在Chrome和Firefox中運行良好,但在IE中 - 列表只是以相反的順序反轉。

有關理由或解決方法的任何想法? 提前致謝。

您的排序功能不正確。 sort函數不能只返回一個布爾值,告訴一個元素是否大於另一個元素。 它必須處理所有三種情況:小於,大於和等於。

  • 如果a <b,則返回負值
  • 如果a> b,則返回正值
  • 如果a == b,則返回零

更改排序功能很容易實現此目的。 不是將這兩個值與<運算符進行比較,而是簡單地減去它們:

   return new Date($(a).attr('value')) - new Date($(b).attr('value'));

如果這給你的順序與你想要的相反,那么反過來:

   return new Date($(b).attr('value')) - new Date($(a).attr('value'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM