我正在使用以下函数和代码按列对表进行排序,它工作正常但有一种方法我不能用click事件重复我自己,即只有一次点击事件并使用id或数据列标题的id。 谢谢!
function sortTable(f,n){
var rows = $('#mytable tbody tr').get();
rows.sort(function(a, b) {
var A = getVal(a);
var B = getVal(b);
if(A < B) {
return -1*f;
}
if(A > B) {
return 1*f;
}
return 0;
});
function getVal(elm){
var v = $(elm).children('td').eq(n).text().toUpperCase();
if($.isNumeric(v)){
v = parseInt(v,10);
}
return v;
}
$.each(rows, function(index, row) {
$('#mytable').children('tbody').append(row);
});
}
var f_sl = 1; // flag to toggle the sorting order
var f_nm = 1; // flag to toggle the sorting order
$("#sl").click(function(){
f_sl *= -1; // toggle the sorting order
var n = $(this).prevAll().length;
sortTable(f_sl,n);
});
$("#nm").click(function(){
f_nm *= -1; // toggle the sorting order
var n = $(this).prevAll().length;
sortTable(f_nm,n);
})
答案 0 :(得分:1)
$("#sl, #nm").click(function(){
var id = $(this).attr('id');
if(id == 'sl')
f_sl *= -1;
else
f_nm *= -1;
var n = $(this).prevAll().length;
if(id == 'sl')
sortTable(f_sl,n);
else
sortTable(f_nm,n);
});
答案 1 :(得分:1)
将排序变量更改为对象
var colSort = {
f_sl : 1,
f_nm : 1
}
然后,您可以使用元素ID
非常简单地引用这些属性var $cols = $("#sl, #nm").click(function(){
var idx = $cols.index(this), sorter = colSort['f_' + this.id];
sorter *= -1;
sortTable(sorter, idx);
});