jQuery javascript自定义排序过程在Firefox中工作,但IE不';我好像不明白。。。(复制粘贴示例代码)

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数组进行排序。容器包含具有特殊属性的项目列表

对于排序:

  • 加载临时数组中的所有项
  • 清理容器
  • 将临时数组排序为新数组
  • 将已排序的项目附加到容器
  • 不知怎的,Firefox知道如何排序,但IE却不知道有人能告诉我什么工作不正常吗?

    (您可以将下面的html复制粘贴到一个空的.html文件中,它应该可以立即工作)

    
    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;