Jquery原创排序table
思路:利用交换行配合最小排序法来实现
1.调用方法,如sortColumn(1,1)
2.getColumnValue(1,2) 得到第一行第二列的值
3.exChangeRow(1,4) 交换第一和第四行(这个方法i必须小于j)
源码如下(适当修改即可使用):
<script language="javascript" type="text/javascript">
var sortDirection = 'desc';
function sortColumn(column,type) {
var rows = $("#MyGrid tbody tr").length-2+1;
for (var i = 2; i <= rows; i++) {
for (var j = 2; j <= rows; j++) {
if (sortDirection == 'desc') {
if (compareValueNew(getColumnValue(i, column),getColumnValue(j, column),type,1)) {
if (i < j) {
exChangeRow(i, j);
}
else {
exChangeRow(j, i);
}
}
}
if (sortDirection == 'asc') {
if (compareValueNew(getColumnValue(i, column),getColumnValue(j, column),type,2)){
if (i < j) {
exChangeRow(i, j);
}
else {
exChangeRow(j, i);
}
}
}
}
}
if (sortDirection == 'desc') {
sortDirection = 'asc';
}
else {
sortDirection = 'desc';
}
}
function getColumnValue(row,column)
{
var returnValue = $("#MyGrid tbody tr:eq("+row+") td:eq("+column+")").text();
return returnValue;
}
function exChangeRow(i, j) {
$("#MyGrid tbody tr:eq(" + j + ")").insertAfter($("#MyGrid tbody tr:eq(" + i + ")"));
$("#MyGrid tbody tr:eq(" + i + ")").insertAfter($("#MyGrid tbody tr:eq(" + j + ")"));
}
function compareValueNew(value1, value2, type,direction) {
//1 text
if (1 == type) {
if (1 == direction) {
return value1 < value2;
}
else {
return value1 > value2;
}
}
//2 float
if (2 == type) {
if (1 == direction) {
return parseFloat(value1) < parseFloat(value2);
}
else {
return parseFloat(value1) > parseFloat(value2);
}
}
}
</script>
posted on 2013-02-28 10:55 kenny jiang 阅读(300) 评论(0) 编辑 收藏 举报