這是一個用於完全不同的東西的數據表提琴的叉子。
http://jsfiddle.net/72xGx/
該樣品取「範圍濾波」的數據表位點爲起點的例子。 它使用複選框來確定是否應用過濾器,並且默認情況下所有過濾器都處於打開狀態。當您檢查並取消選中複選框時,表格中的數據應相應地過濾。毫無疑問,這可以進行一些清理,但我相信你會發現這是實現你所說的目標的一條途徑。
的JavaScript
/* Custom filtering function which will filter data in column four between two values */
$.fn.dataTableExt.afnFiltering.push(
function (oSettings, aData, iDataIndex) {
var gA = $('#ckb-gradeA').is(':checked'),
gC = $('#ckb-gradeC').is(':checked'),
gU = $('#ckb-gradeU').is(':checked'),
gX = $('#ckb-gradeX').is(':checked');
var myRowClass = oSettings.aoData[iDataIndex].nTr.className;
if (myRowClass === 'gradeA' || myRowClass === 'gradeA even' || myRowClass === 'gradeA odd') {
return gA === true ? true : false;
} else if (myRowClass === 'gradeC' || myRowClass === 'gradeC even' || myRowClass === 'gradeC odd') {
return gC === true ? true : false;
} else if (myRowClass === 'gradeU' || myRowClass === 'gradeU even' || myRowClass === 'gradeU odd') {
return gU === true ? true : false;
} else if (myRowClass === 'gradeX' || myRowClass === 'gradeX even' || myRowClass === 'gradeX odd') {
return gX === true ? true : false;
} else {
return false;
}
});
$(function() {
/* Initialise datatables */
var oTable = $('#example').dataTable();
/* Add event listeners to the two range filtering inputs */
$('#ckb-gradeA').change(function() {
oTable.fnDraw();
});
$('#ckb-gradeC').change(function() {
oTable.fnDraw();
});
$('#ckb-gradeU').change(function() {
oTable.fnDraw();
});
$('#ckb-gradeX').change(function() {
oTable.fnDraw();
});
});
HTML表格結構的一部分
(以注意的<tr>
元素一些css
類)
<tr class="gradeC">
<td>Trident</td>
<td>Internet Explorer 5.0</td>
<td>Win 95+</td>
<td class="center">5</td>
<td class="center">C</td>
</tr>
<tr class="gradeA">
<td>Trident</td>
<td>Internet Explorer 5.5</td>
<td>Win 95+</td>
<td class="center">5.5</td>
<td class="center">A</td>
</tr>
<tr class="gradeA">
<td>Trident</td>
<td>Internet Explorer 6</td>
<td>Win 98+</td>
<td class="center">6</td>
<td class="center">A</td>
</tr>
感謝這個 - ' oSettings.aoData [iDataIndex] .nTr.className;'是我拼圖的缺失部分。幾個註釋:我認爲你錯過了');''。$ .fn.dataTableExt.afnFiltering.push(' - 應該放在$(function(){')之前。另外,如果其他人我)使用的是DataTables 1.10以後的版本,你需要調用'table.draw()'而不是'table.fnDraw()'來使表刷新自己 –
另外,一個更簡潔的方式來測試這個類,一個類名的數組,並查看該數組是否包含您正在測試的類。因此,您可以說'var myRowClasses = oSettings.aoData [iDataIndex] .nTr.className.split(「」);'然後像'if (myRowClasses.indexOf('gradeA')> -1)' –