dataTables按类名<tr>自定义过滤

Der*_*rek 4 jquery datatables jquery-datatables

我在http://datatables.net/examples/plug-ins/range_filtering.html上阅读了文档,以便按范围进行过滤,但我不太明白如何按行的类过滤项目.

我希望有几个按钮,当单击时,按每行的类(字符串值)过滤dataTable.所以,例如,如果你有

<tr class="dont_filter">
<tr class="do_filter">
Run Code Online (Sandbox Code Playgroud)

它们都会默认出现.当有人单击其中一个按钮时,所有带有"do_filter"的行都将被隐藏,而dataTables会重新绘制列表,以便在所有页面中发生此更改.

mg1*_*075 7

这是一个数据表小提琴的分支,用于完全不同的东西.

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();
    });
});
Run Code Online (Sandbox Code Playgroud)

html表结构的一部分
(以便注意元素css上的一些类<tr>)

    <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>
Run Code Online (Sandbox Code Playgroud)