jQuery javascript自定义排序过程在Firefox中工作,但IE似乎没有得到它(复制粘贴示例代码)

前端之家收集整理的这篇文章主要介绍了jQuery javascript自定义排序过程在Firefox中工作,但IE似乎没有得到它(复制粘贴示例代码)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经建立了这个示例代码,基于我在应用程序中的一个真正的问题.我有一个自定义排序过程来排序jQuery数组.容器包含具有特殊属性的项目列表.

排序:

>加载临时数组中的所有项目
>清除容器
>将temp数组排序成一个新的数组
>将已排序的项目追加到容器

不知何故,Firefox知道如何排序,但IE没有.有人可以告诉我什么工作不正常吗?

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

<html>
<head>
<script type="text/javascript" 
    src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
    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;
    }


    </script>
</head>
<body>

    <a href="javascript:DoTheSort();">Sort</a>

    <div id="sortables">
        <div class="sortable" sortvalue="5">5</div>
        <div class="sortable" sortvalue="1">1</div>
        <div class="sortable" sortvalue="4">4</div>
        <div class="sortable" sortvalue="1">1</div>
        <div class="sortable" sortvalue="2">2</div>
        <div class="sortable" sortvalue="9">9</div>
        <div class="sortable" sortvalue="3">3</div>
    </div>



</body>
</html>

解决方法

你的排序过程是错误的:你需要考虑均等,布尔值不是正确的返回类型(见附录).

做这个:

return value1 - value2;

代替:

return value1 > value2;

附录:

排序比较函数f(A,B)的一般形式需要返回> 0如果A> B,如果A < B,如果不需要改变,则为0.返回一个布尔值可以让你被错误的值捕获,而不是代表你认为他们所做的.

猜你在找的jQuery相关文章