Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从元素的id创建动态变量名_Jquery - Fatal编程技术网

Jquery 从元素的id创建动态变量名

Jquery 从元素的id创建动态变量名,jquery,Jquery,我正在使用下面的函数和代码按列对表进行排序,它工作得很好,但是有没有一种方法我不能用click事件重复我自己,即只有一个click事件并使用列标题的id或数据id。 谢谢 函数可排序(f,n){ var rows=$('#mytable tbody tr').get(); 行排序(函数(a,b){ var A=getVal(A); var B=getVal(B); if(AB){ 返回1*f; } 返回0; }); 函数getVal(elm){ var v=$(elm).children('td

我正在使用下面的函数和代码按列对表进行排序,它工作得很好,但是有没有一种方法我不能用click事件重复我自己,即只有一个click事件并使用列标题的id或数据id。 谢谢

函数可排序(f,n){
var rows=$('#mytable tbody tr').get();
行排序(函数(a,b){
var A=getVal(A);
var B=getVal(B);
if(AB){
返回1*f;
}
返回0;
});
函数getVal(elm){
var v=$(elm).children('td').eq(n).text().toUpperCase();
如果($.isNumeric(v)){
v=parseInt(v,10);
}
返回v;
}
$.each(行,函数(索引,行){
$(“#mytable”).children('tbody').append(行);
});
}
var f_sl=1;//切换排序顺序的标志
var f_nm=1;//切换排序顺序的标志
$(“#sl”)。单击(函数(){
f_sl*=-1;//切换排序顺序
var n=$(this.prevAll().length;
可排序(f_sl,n);
});
$(“#nm”)。单击(函数(){
f_nm*=-1;//切换排序顺序
var n=$(this.prevAll().length;
可排序(f_nm,n);
})

您可以这样做:

$("#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);
});

将排序变量更改为对象

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);
});
var $cols = $("#sl, #nm").click(function(){
    var idx = $cols.index(this), sorter =  colSort['f_' + this.id];
    sorter *= -1;
    sortTable(sorter, idx);
});