Microsoft Edge和使用jQuery排序

时间:2016-01-07 16:15:43

标签: jquery sorting microsoft-edge

我有以下代码适用于Firefox和Chrome,但使用Microsoft Edge(默认设置)时,列表项不会被排序 - 它们将保持无序状态。我使用的是MS Edge 20.10240.16384.0。

有没有人见过这个问题并找到了解决方案? (这里的id是ul的容器)

$( id + ' li' ).sort(function ( a, b ) {
    return parseFloat( $( a ).attr( "id" ).replace( 'page', '' ) )
         > parseFloat( $( b ).attr( "id" ).replace( 'page', '' ) );
}).appendTo( id + ' ul' );

JS小提琴示例:https://jsfiddle.net/c1d8caa5/2/

1 个答案:

答案 0 :(得分:3)

此代码利用了本机Array.prototype.sort方法,该方法在ECMAScript标准的22.1.3.24部分中进行了描述。此方法接受单个 comparefn 参数:

  

如果 comparefn 未定义,则它应该是一个接受两个参数x和y的函数,如果x< ,则返回负值。 y,如果x = y,或正值,如果x>年。 (重点补充)

因此,请确保比较功能返回-101。此外,您可以从另一个中减去一个数字,这将产生负数,零或正数,从而满足要求。

虽然Microsoft Edge可能不会违反此标准,但如果其他主流浏览器更松散地实现此功能(接受布尔值),而Edge没有,则可能会提出互操作问题并查看是否应该使用Edge对齐。

我在Edge团队工作,并会提交一个问题供我考虑。