我已经在这个工作了几天。我有一个动态创建表中的行的脚本。最终输出如下:
<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中 - 列表只是以相反的顺序反转。
有关理由或解决方法的任何想法?提前谢谢。
答案 0 :(得分:3)
您的排序功能不正确。 sort函数不能只返回一个布尔值,告诉一个元素是否大于另一个元素。它必须处理所有三种情况:小于,大于和等于。
很容易改变排序功能来实现这一目标。不是将这两个值与<
运算符进行比较,而是简单地减去它们:
return new Date($(a).attr('value')) - new Date($(b).attr('value'));
如果这给你的顺序与你想要的相反,那就改掉它:
return new Date($(b).attr('value')) - new Date($(a).attr('value'));