javascript - 无法使用 "Yet Another DataTables Column Filter"插件销毁()

标签 javascript jquery datatables yadcf

我正在使用 DataTablesYADCF过滤表格。

在某些时候,我需要暂时解除两个插件与我的表的绑定(bind),然后再重新绑定(bind)它们。如果我不使用 YADCF,我可以销毁数据表并重新初始化它。然而,当我使用 YADCF 时,表的过滤器部分并没有被破坏。

HTML:

<a href="#" id="create">Create</a> | <a href="#" id="destroy"> Destroy</a>

<table id="mytable" class="results table table-striped">
    <thead>
        <tr>
            <th>Head 1</th>
            <th>Head 2</th>
            <th>Head 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>12</td>
            <td>13</td>
            <td>14</td>
        </tr>
        <tr>
            <td>12</td>
            <td>13</td>
            <td>14</td>
        </tr>
        <tr>
            <td>152</td>
            <td>13</td>
            <td>154</td>
        </tr>
        <tr>
            <td>1762</td>
            <td>1873</td>
            <td>1874</td>
        </tr>
        <tr>
            <td>124</td>
            <td>1343</td>
            <td>1124</td>
        </tr>
    </tbody>
</table>

没有 YADCF 的 JS JSFIDDLE :

var oTable = $('table');

$('#create').click(function (e) {
    e.preventDefault();
    oTable.dataTable({
        "bJQueryUI": true,
            "bStateSave": true,
            "bPaginate": false,
            "bAutoWidth": false,
    });

});

$('#destroy').click(function (e) {
    e.preventDefault();
    oTable.fnDestroy();
    oTable.attr('class', '');
});

带有 YADCF 的 JS JSFIDDLE :

var oTable = $('table');

$('#create').click(function (e) {
    e.preventDefault();
    oTable.dataTable({
        "bJQueryUI": true,
            "bStateSave": true,
            "bPaginate": false,
            "bAutoWidth": false,
    });


    // Add YADCF
    oTable.yadcf([{
      column_number: 1,
      filter_type: 'range_number',
      ignore_char: 'm'
    }, {
      column_number: 2,
      filter_type: 'text',
      filter_default_label: ' '
    },
    ]);


});

$('#destroy').click(function (e) {
    e.preventDefault();
    oTable.fnDestroy();
    oTable.attr('class', '');
});

任何人都可以建议如何销毁 YADCF 过滤器吗?

最佳答案

所以,这实际上是一个错误。

Issue Submitted | Workaround JSFiddle

JS:

var oTable = $('table');
var first = true;

$('#create').click(function (e) {

    e.preventDefault();
    oTable.dataTable({
        "bJQueryUI": true,
            "bStateSave": true,
            "bPaginate": false,
            "bAutoWidth": false
    });

    if (first) {
        first = false;
        // Add YADCF
        oTable.yadcf([{
            column_number: 1,
            filter_type: 'range_number',
            ignore_char: 'm'
        }, {
            column_number: 2,
            filter_type: 'text',
            filter_default_label: ' '
        } ]);
    } else {
        oTable.find('thead').find('[id^=yadcf-filter-wrapper-table]').each(function (i, v) {
            var cloned = $(this).clone(true);
            console.log( $(this) );
            $(this).closest('th').append( cloned );
            $(this).remove();
            oTable.find('.DataTables_sort_wrapper').css('display', 'inline-block');
        });
        oTable.find('[id^=yadcf]').show();
    }

});

$('#destroy').click(function (e) {
    e.preventDefault();
    oTable.fnDestroy();
    oTable.attr('class', '');
    oTable.off();
    oTable.find('[id^=yadcf]').hide();
    oTable = $('table');
});

$('#add-row').click(function (e) {
    e.preventDefault();
    $('table').append('<tr><td>' + getRandom() + '</td><td>' + getRandom() + '</td><td>' + getRandom() + '</td></tr>');
});

function getRandom() {
    return parseInt(10000 * Math.random(), 10);
}

关于javascript - 无法使用 "Yet Another DataTables Column Filter"插件销毁(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26735050/

相关文章:

javascript - 使用工厂和 AngularJS 在 ngclick 方法内创建对象

javascript - 表单验证——就简洁性而言

javascript - 通知 JS 不工作

javascript - 在 Oracle Apex 4.2 中通过 Jquery 传递选择列表的值

javascript - 数据表 : search field position misaligned

javascript - D3 小圆位于大圆半径边缘

javascript - 滚动淡入淡出在 Firefox 上不起作用

javascript - 如何使用 javascript 从文件中获取图像尺寸(高度、宽度)

mysql - JQuery 数据表 + Codeigniter(静态列)

jquery - Bootstrap 模式中损坏的表头