我有以下代码适用于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/
解决方法
此代码利用了原生的Array.prototype.sort方法,该方法在ECMAScript标准的第
22.1.3.24节中有所描述.此方法接受单个comparefn参数:
If comparefn is not undefined,it should be a function that accepts two arguments x and y and returns a negative value if x < y,zero if x = y,or a positive value if x > y. (emphasis added)
因此,请确保您的比较函数返回-1,0或1.此外,您可以从另一个中减去一个数字,这将产生负数,零或正数,从而满足要求.
虽然Microsoft Edge可能不会违反此标准,但如果其他主流浏览器更松散地实现此功能(接受布尔值),而Edge不支持,则可能会提出互操作问题并查看Edge是否应该对齐.
我在Edge团队工作,并将提交一个问题供考虑.