我有以下代码,适用于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,或正值(增加强调)
因此,请确保比较函数返回-1
、0
或1
。此外,您可以从另一个数字中减去一个数字,这将产生负数、零或正数,从而满足要求。
虽然Microsoft Edge可能没有违反这里的标准,但如果其他主要浏览器实现得更宽松(接受布尔型),而Edge没有,这可能是提出互操作问题的理由,并查看Edge是否应该对齐。
我在Edge团队工作,将提交一个问题供考虑。