Microsoft Edge 和使用 jQuery 排序
Microsoft Edge and Sorting with 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 参数:
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)
因此,请确保您的 比较函数 returns -1
、0
或 1
。另外,你可以减去一个数,得到一个负数、零或一个正数,从而满足要求。
虽然 Microsoft Edge 可能没有违反此处的标准,但如果其他主要浏览器更宽松地实现了这一点(接受布尔值),而 Edge 没有,这可能是提出互操作问题并查看 Edge 是否应该的理由对齐。
我在 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 fiddle 示例: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)
因此,请确保您的 比较函数 returns -1
、0
或 1
。另外,你可以减去一个数,得到一个负数、零或一个正数,从而满足要求。
虽然 Microsoft Edge 可能没有违反此处的标准,但如果其他主要浏览器更宽松地实现了这一点(接受布尔值),而 Edge 没有,这可能是提出互操作问题并查看 Edge 是否应该的理由对齐。
我在 Edge 团队工作,将提交一个问题以供考虑。