Rop*_*tah 13 javascript sorting jquery cross-browser
我根据应用程序中的实际问题构建了此示例代码.我有一个自定义排序过程来排序jQuery数组.容器包含具有特殊属性的项列表.
用于分类:
不知何故,Firefox知道如何排序,但IE不知道.有人能告诉我什么不能正常工作吗?
(你可以将下面的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>
Run Code Online (Sandbox Code Playgroud)
ann*_*ata 22
您的排序过程是巧妙的错误:您还需要考虑相等性,并且布尔值不是正确的返回类型(请参阅附录).
做这个:
return value1 - value2;
Run Code Online (Sandbox Code Playgroud)
代替:
return value1 > value2;
Run Code Online (Sandbox Code Playgroud)
附录:
如果A> B,则排序比较函数f(A,B)的一般形式需要返回> 0,如果A <B则需要返回0,如果不需要改变则需要返回0.返回一个布尔值会使你被错误的值所捕获,而这些值并不代表你认为它们的作用.
| 归档时间: |
|
| 查看次数: |
6241 次 |
| 最近记录: |