jQuery javascript自定义排序过程在Firefox中工作,但IE不';我好像不明白。。。(复制粘贴示例代码)
我根据我在应用程序中遇到的一个实际问题构建了这个示例代码。我有一个自定义的排序过程来对jQuery数组进行排序。容器包含具有特殊属性的项目列表 对于排序:jQuery javascript自定义排序过程在Firefox中工作,但IE不';我好像不明白。。。(复制粘贴示例代码),javascript,jquery,sorting,cross-browser,Javascript,Jquery,Sorting,Cross Browser,我根据我在应用程序中遇到的一个实际问题构建了这个示例代码。我有一个自定义的排序过程来对jQuery数组进行排序。容器包含具有特殊属性的项目列表 对于排序: 加载临时数组中的所有项 清理容器 将临时数组排序为新数组 将已排序的项目附加到容器 不知怎的,Firefox知道如何排序,但IE却不知道有人能告诉我什么工作不正常吗? (您可以将下面的html复制粘贴到一个空的.html文件中,它应该可以立即工作) jQuery.fn.sort=函数(){ 返回这个.pushStack([].sort.ap
jQuery.fn.sort=函数(){
返回这个.pushStack([].sort.apply(这个,参数),[]);
}
函数DoTheSort(){
//获取jQueryElement中的元素
var sortableArray=$(“#sortables”).find('div.sortable');
//清除可排序容器
$(“#可排序”).empty();
//对数组进行排序
var sortedArray=$(sortableArray).sort(sortProcedure);
//追加已排序的项目
每个(sortedArray,function()){
警报($(this.attr(“sortvalue”));
$('#sortables')。追加(this);
});
}
函数排序过程(a,b){
var value1=parseInt($(a).attr(“sortvalue”);
var value2=parseInt($(b).attr(“sortvalue”);
返回值1>值2;
}
5.
1.
4.
1.
2.
9
3.
您的排序过程有细微的错误:您还需要考虑等式,布尔值不是正确的返回类型(请参阅附录)
这样做:
return value1 - value2;
而不是:
return value1 > value2;
增编:
排序比较函数f(a,B)的一般形式需要在a>B时返回>0,在a好消息!它在我的应用程序中还不太起作用。。。我将返回的数组(通过sort函数)放回同一个变量中。这把事情搞砸了。。。不管怎样,它现在开始工作了!如果这不是解决方案,请您解释一下您是如何修复此错误的。我也遇到了同样的问题。仅扩展一下,问题是IE的排序假设0相等,负数小于,正数大于。这意味着返回0或false在IE中的解释是不同的。Chrome、Firefox和opera似乎可以很好地处理布尔返回,但safari和IE不能。
return value1 > value2;