2016-09-26 9 views
1

次の関数とコードを使用して列で表をソートしても問題ありませんが、クリックイベントで自分自身を繰り返すことはできません。イベントをクリックして、列見出しのIDまたはデータ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); 
    }) 

答えて

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

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); 
}); 
関連する問題