我构建这个示例代码是基于我在应用程序中遇到的一个实际问题。我有一个定制的排序过程来对jQuery数组进行排序。容器包含具有特殊属性的项列表。
用于分类:
container
中
不知何故,火狐知道如何排序,但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>发布于 2009-06-04 11:32:37
您的排序过程是错误的:您也需要考虑等式,布尔值不是正确的返回类型(见增编)。
这样做:
return value1 - value2;而不是:
return value1 > value2;增编:
排序比较函数f(A,B)的一般形式需要返回>0(A> B )、<0(A< B )和0(如果不需要更改)。返回一个布尔值会让您被falsey值捕获,而不是表示它们所做的事情。
https://stackoverflow.com/questions/949951
复制相似问题