jQuery javascript自定义排序程序在Firefox中运行,但IE似乎没有得到它…(复制粘贴示例代码)
我根据应用程序中的实际问题构建了此示例代码。 我有一个自定义排序过程来排序jQuery数组。 容器包含具有特殊属性的项列表。
用于分类:
- 加载临时数组中的所有项目
- 清除容器
- 将临时数组排序为新数组
- 将已排序的项目附加到容器
不知何故,Firefox知道如何排序,但IE不知道。 有人能告诉我什么不能正常工作吗?
(你可以将下面的html复制粘贴到一个空的.html文件中,它应该立即工作)
jQuery.fn.sort = function() { return this.pushStack( [].sort.apply( this, arguments ), []); } function DoTheSort() { //Fetch elements in jQueryElement var sortableArray = $('#sortables').find('div.sortable'); //Clear the sortables container $('#sortables').empty(); //Sort the array var sortedArray = $(sortableArray).sort(sortProcedure); //Append sorted items jQuery.each(sortedArray, function() { alert($(this).attr("sortvalue")); $('#sortables').append(this); }); } function sortProcedure(a, b) { var value1 = parseInt($(a).attr("sortvalue")); var value2 = parseInt($(b).attr("sortvalue")); return value1 > value2; } Sort 5 1 4 1 2 9 3
您的排序过程是巧妙的错误:您还需要考虑相等性,而布尔值不是正确的返回类型(参见附录)。
做这个:
return value1 - value2;
代替:
return value1 > value2;
附录:
如果A> B,则排序比较函数f(A,B)的一般forms需要返回> 0,如果A