[解決済み] dataTables のカラムをカスタム sortId でソートする
質問
を使っています。
jQuery データテーブル
1.9.4でデータを表示するようにしました。私はセルに表示する新しいカスタムタイプを持っており、各タイプのカスタムソート関数を追加すると、表示形式が表現された値に容易に関連しないため、非常にトリッキーでメンテナンス性が悪くなります。例えば、表示形式は次のようになります。
3 oranges, 4 apples
で、ソートのための値は次のようになります。
7
.
私が思いつく最良の解決策は、このように
sortId
属性は、各セルに整数で指定され、列のセルは、このような方法でソートされます。
sortId
.
before
<td>3 oranges, 4 apples</td>
after
<td sortId="7">3 oranges, 4 apples</td>
Webで検索してみましたが、どうやらこの機能は データテーブル . どうすれば実現できるのでしょうか?
を使用することに注意してください。
sortId
の属性である必要はありません。
<td>
文字数がそれほど多くない限りは、他の隠された解決策でもかまいません。
その データソート 属性は、まさに私が探していたものです。
この属性を追加する実験を少ししてみたが、うまくいかなかった(両方とも
data-sort
と
data-order
).
-
この機能を実現するために、テーブルのどこかをいじる必要がありますか?
-
2012 バージョンの datatable (v1.9.4) を使用していますが、この機能はこのバージョンですでに実装されていますか? ファイル内のテキスト検索 jquery.dataTable.js には全くマッチしません。
data-order
とdata-sort
の文字列があります。
解決方法は?
jQuery DataTables 1.10以上
を使用したい場合
td
要素の属性があります。
data-sort
属性は、HTMLソース・データのソートに使用される値を定義します。
<td data-sort="7">3 oranges, 4 apples</td>
参照 この例 をクリックすると、デモをご覧いただけます。
または
columns.render
オプションがありますが、これはAjaxやJavaScriptで作成されたデータにより適しています。
jQuery DataTables 1.9
使用方法
aoColumnDefs.mRender
のように、データをソートしているときにセルの内容を生成します。
var table = $('#example').dataTable({
"aoColumnDefs": [{
"aTargets": [0],
"mRender": function(data, type, full) {
if (type === "sort") {
var numbers = data.match(/\d+/g);
data = 0;
for (var i = 0; i < numbers.length; i++) {
data += Number(numbers[i]);
}
}
return data;
}
}]
});
参照 このjsFiddle のコードとデモをご覧ください。
jQuery DataTables 1.9の代替案として、hidden要素を使用し、そこにソート値を指定することができます。値は文字列として比較されるので、必要であれば数値にゼロパディングを追加してください。
<tr>
<td><span style="display:none">0007</span> 1 apple, 6 oranges</td>
</tr>
<tr>
<td><span style="display:none">0005</span> 3 apples, 2 oranges</td>
</tr>
<tr>
<td><span style="display:none">0006</span> 5 apples, 1 orange</td>
</tr>
参照 このjsFiddle のコードとデモをご覧ください。
関連
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
-
[解決済み] オブジェクトの配列を日付のプロパティでソートする方法は?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] オブジェクトのプロパティを値でソートする
-
[解決済み] JQueryでラジオボタンがチェックされているかどうかを調べる?
-
[解決済み】オブジェクトの配列をプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。