filter_selectSource
optionを使用して、その列の選択肢にオプションを追加できるようです。
組み込みのgetOptions
functionを使用すると、現在の列の値を取得できます。彼らはカンマで区切られている場合は、カンマを使用してアレイに参加することができ、再分割の結果(demo)
$(function() {
$('table').tablesorter({
theme: 'blue',
widgets: ['zebra', 'filter'],
widgetOptions: {
filter_selectSource: function(table, column, onlyAvail) {
var array = $.tablesorter.filter.getOptions(table, column, onlyAvail);
return array.join(',').split(/\s*,\s*/);
}
}
});
});
編集:また、「フィルタ・マッチ」クラス(「フィルタ選択を追加してください")を選択して、選択したオプションにのみ一致させます。それ以外の場合は完全一致にデフォルト設定されます。
更新:データは<br>
年代を用いて分離されている場合、あなたは、あなたが同じコード(demo)を使用することができ、カンマで<br>
を置き換えるために、カスタム・パーサーを追加する必要があります
ヘッダは、パーサの設定のみ使用するフィルタウィジェットを伝えるために、2つの以上のクラスを必要とするデータを構文解析:
<th class="filter-select filter-match sorter-html filter-parsed">Animals</th>
JS
$(function() {
$.tablesorter.addParser({
id: 'html',
is: function() {
return false;
},
format: function(str, table, cell) {
var c = table.config,
html = cell.innerHTML;
if (html) {
// replace <br> with a comma
html = html.replace(/\s*<br\s*\/?>\s*/g, ',')
html = $.trim(c.ignoreCase ? html.toLocaleLowerCase() : html);
html = c.sortLocaleCompare ? $.tablesorter.replaceAccents(html) : html;
}
return html;
},
type: 'text'
});
$('table').tablesorter({
theme: 'blue',
widgets: ['zebra', 'filter'],
widgetOptions: {
filter_selectSource: function(table, column, onlyAvail) {
var array = $.tablesorter.filter.getOptions(table, column, onlyAvail);
return array.join(',').split(/\s*,\s*/);
}
}
});
});
これはいいですね、ありがとう。しかし、getOptions関数は、セパレータがカンマの場合には機能しますが、セパレータが
のようなhtmlタグの場合には機能しないプレーンテキストセルの内容を返します。その場合、getOptionsソースを変更せずにどのように処理を進めていくのか? textExtraction関数の使用について考えてみましょうが、他の多くのものも変更されます。 – kroky
私の更新された回答を確認してください。 – Mottie
素晴らしい、ありがとう!私がしなければならなかったのは、フォーマット関数cell paramが常に存在するとは限らない(つまり、 'parseFilter'関数から呼び出されたときに空の配列である)ため、' str'を使用しなければなりませんでした。 – kroky