微软边缘和排序与jQuery



我有以下代码,适用于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 fiddle示例:https://jsfiddle.net/c1d8caa5/2/

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

如果comparefn未定义,则它应该是一个接受两个参数x和y的函数,并且如果x<y、 如果x=y,或正值(增加强调)

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

虽然Microsoft Edge可能没有违反这里的标准,但如果其他主要浏览器实现得更宽松(接受布尔型),而Edge没有,这可能是提出互操作问题的理由,并查看Edge是否应该对齐。

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

最新更新