2014-12-05 117 views
1

在Chrome上工作正常,有人能告诉我为什么它不在Safari上对表进行排序以及如何修复它?
我看了控制台,没有错误。

HTML:
'.sort'不适用于Safari

 <tr> 
      <td> 
       <input name="d1" value="01/01/1992"> 
      </td> 
     </tr> 

     <tr> 
      <td> 
       <input name="d1" value="01/01/1991"> 
      </td> 
     </tr> 
    </tbody> 
</table> 
<button>SORT</button> 


的jQuery:

$('button').on('click',function(){ 
    sort(); 
}); 

function sort() { 
    $('tBody tr').sort(function(a, b) { 
     return new Date($(a).find('input[name="d1"]').val()).getTime() > new Date($(b).find('input[name="d1"]').val()).getTime() 
    }).appendTo('tBody'); 
} 

的jsfiddle:
http://jsfiddle.net/nm5vbtdq/1/

+0

你在Safari中得到什么样的错误? – putvande 2014-12-05 16:54:41

+0

它不排序,在控制台上没有错误。 – BernardoLima 2014-12-05 16:55:01

+0

您是否检查过“新Date(...)'在所有浏览器中为您的输入字符串生成相同的值?除非你使用标准的ISO YYYY-MM-DDTHH:mm:ss.sssZ字符串,否则它们很可能不会被解析。 – apsillers 2014-12-05 16:55:02

回答

4

我相信你需要在Safari返回-1/1,而不是一个布尔值,见下图:

function sort() { 
    $('tBody tr').sort(function(a, b) { 
     var result = new Date($(a).find('input[name="d1"]').val()).getTime() > new Date($(b).find('input[name="d1"]').val()).getTime() ? 1 : -1; 
     return result; 
    }).appendTo('tBody'); 
} 
相关问题