2011-01-02 14 views
3

私は、ユーザーが並べ替えることができる名前と年齢のテーブルを持っています。ページがinitally、sortListリスト最年少の古いものから順に行、およびをロードすると、ユーザーが実際に年齢<th>をクリックしたときに、私は同じこと(セカンドアルファベット順の並べ替え)をしたい二次Z.jQuery/Tablesorter:二次アルファベット順の並べ替えを維持する

から、 sortForceはアルファベット順のソートを作成しています。代わりがありますか?

$('#super_results table').tablesorter({ 
    sortForce: [[0,0]], 
    sortList: [[1,1],[0,0]] 
}); 

または私は誤解してsortForceですか? Documentation here.

アップデート:私は私のためにこれを行うためのプラグインを見つけることができませんでしたので、私はテーブルを構築多次元配列をソートし、いくつかのコードを書きました。最初の最古に最年少(num2Sort種類を、あなたはtableContentsと呼ばれる配列を持っている、とZ.から、その後tableContents[0]は、名前の部分配列であるとtableContents[1]は、最初の最も古いから最年少の配列をソートしますtableContents.sort(numSort)を呼び出して、年齢の部分配列である、とした場合)次に、createHtml(data)を使用してテーブルを再作成し、その結果を使用して古いテーブルを置き換えることができます。

function numSort(a, b) { 
    if (a[1] === b[1]) { 
     if (a[0] === b[0]) { 
      return 0; 
     } 
     return (a[0] < b[0]) ? -1 : 1; 
    } 
    return (a[1] < b[1]) ? 1 : -1; 
} 

function num2Sort(a, b) { 
    if (a[1] === b[1]) { 
     if (a[0] === b[0]) { 
      return 0; 
     } 
     return (a[0] < b[0]) ? -1 : 1; 
    } 
    return (a[1] < b[1]) ? -1 : 1; 
} 

function createHtml(data) { 
    var completeListLength = MYAPP.completeList.length, 
    html = '<table>'; 
    html += '<thead>'; 
    html += '<tr>'; 
    html += '<th>names</th>'; 
    html += '<th>ages</th>'; 
    html += '</tr>'; 
    html += '</thead>'; 
    html += '<tbody>'; 
    for (var i = 0; i < completeListLength; i += 1) { 
     html += '<tr>'; 
     html += '<td>' + data[i][0] + '</td>'; 
     html += '<td>' + data[i][1] + '</td>'; 
     html += '</tr>'; 
    } 
    html += '</tbody>'; 
    html += '</table>'; 
    return html; 
} 
+0

それはあなたがsortForceを削除すると動作しますか? – typeof

+0

sortForceを削除して年齢をクリックすると、表の年齢はソートされますが、アルファベットはありません。 – user460847

+0

私はプラグインがあなたが求めていることをする能力を持っていません。 – ifaour

答えて

3

私は同じ問題を抱えており、このつまずいた:

jQuery tablesorter secondary sorting problem

+0

私の特定のテーブルのための自分のコードをすでに書いていますが、ありがとう!これは間違いなく、同じ問題に遭遇した他の人々を助けるはずです。 – user460847

+1

リンクが壊れています。 – Kocik

0

私はtablesorterに慣れていないんだけど、ドキュメントを見ることで、それが特定の順序に列をsortForceプロパティのロックを下に表示されます - そして、二次、他の列のソートが可能になります。私はそれがまさにあなたが望むものだとは思わない。

0

の最初の答えでリンクが壊れています。このページのwebarchiveへのリンクがあります。私は少しv.2.22.3で動作するようにこのコードを変更していた

jQuery tablesorter secondary sorting problem

(多分他のバージョンで動作します)

tablesorterのコードからこれらの行をカット:

if (c.sortForce !== null) { 
    arry = c.sortForce; 
    for (col = 0; col < arry.length; col++) { 
     if (arry[col][0] !== indx) { 
      c.sortList.push(arry[col]); 
     } 
    } 
} 

c.sortList.push([ indx, order ]);の後に貼り付けます。前のコードのある場所の下にいくつかの行があります。 Tablesorter v.2.0には変数(c => config、indx => iなど)の別の名前がありましたが、sortForceを検索する適切な場所を見つけることができます - テーブルー・コードのコードにはいくつかの外観があります

関連する問題