jquery - tablesorter 过滤器插件抛出错误 "Cannot Read property ' $table' of undefined

标签 jquery tablesorter

我正在尝试将 jQuery 的 tablesorter 插件与过滤器小部件一起使用。导致出现标题中提到的错误。它转到 jquery.tablesorter.widgets.js 中的第 374 行,如下所示:

if (!c.$table.hasClass('hasFilters')) {

这是文件中的整个过滤器小部件:

// Widget: filter
// **************************
ts.addWidget({
    id: "filter",
    priority: 50,
    options : {
        filter_childRows     : false, // if true, filter includes child row content in the search
        filter_columnFilters : true,  // if true, a filter will be added to the top of each table column
        filter_cssFilter     : '',    // css class name added to the filter row & each input in the row (tablesorter-filter is ALWAYS added)
        filter_external      : '',    // jQuery selector string (or jQuery object) of external filters
        filter_filteredRow   : 'filtered', // class added to filtered rows; needed by pager plugin
        filter_formatter     : null,  // add custom filter elements to the filter row
        filter_functions     : null,  // add custom filter functions using this option
        filter_hideEmpty     : true,  // hide filter row when table is empty
        filter_hideFilters   : false, // collapse filter row when mouse leaves the area
        filter_ignoreCase    : true,  // if true, make all searches case-insensitive
        filter_liveSearch    : true,  // if true, search column content while the user types (with a delay)
        filter_onlyAvail     : 'filter-onlyAvail', // a header with a select dropdown & this class name will only show available (visible) options within the drop down
        filter_placeholder   : { search : '', select : '' }, // default placeholder text (overridden by any header "data-placeholder" setting)
        filter_reset         : null,  // jQuery selector string of an element used to reset the filters
        filter_saveFilters   : false, // Use the $.tablesorter.storage utility to save the most recent filters
        filter_searchDelay   : 300,   // typing delay in milliseconds before starting a search
        filter_selectSource  : null,  // include a function to return an array of values to be added to the column filter select
        filter_startsWith    : false, // if true, filter start from the beginning of the cell contents
        filter_useParsedData : false, // filter all data using parsed content
        filter_serversideFiltering : false, // if true, server-side filtering should be performed because client-side filtering will be disabled, but the ui and events will still be used.
        filter_defaultAttrib : 'data-value' // data attribute in the header cell that contains the default filter value
    },
    format: function(table, c, wo) {
        if (!c.$table.hasClass('hasFilters')) {
            ts.filter.init(table, c, wo);
        }
    },
    remove: function(table, c, wo) {
        var tbodyIndex, $tbody,
            $table = c.$table,
            $tbodies = c.$tbodies;
        $table
            .removeClass('hasFilters')
            // add .tsfilter namespace to all BUT search
            .unbind('addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '.split(' ').join(c.namespace + 'filter '))
            .find('.' + ts.css.filterRow).remove();
        for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
            $tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // remove tbody
            $tbody.children().removeClass(wo.filter_filteredRow).show();
            ts.processTbody(table, $tbody, false); // restore tbody
        }
        if (wo.filter_reset) {
            $(document).undelegate(wo.filter_reset, 'click.tsfilter');
        }
    }
});

编辑:这就是我调用 tablesorter 的方式。

$("#messageTable").tablesorter({
                theme: 'blue',
                widthFixed: true,
                widgets: ["zebra", "filter"],
                widgetOptions: {
                    filter_columnFilters: true,
                    filter_hideFilters: true,
                    filter_ignoreCase: true,
                    filter_liveSearch: false,
                    filter_filterRow: 'filtered',
                    filter_searchDelay: 300,
                    filter_serversideFiltering: false
                }
            });

最佳答案

今天遇到了这个确切的问题,只需将我的表排序器文件从他们的 website 更新到最新版本即可解决。并更新 jquery。

关于jquery - tablesorter 过滤器插件抛出错误 "Cannot Read property ' $table' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23528546/

相关文章:

javascript - 使用 cookie 和 jquery 记住页面状态(复选框、显示/隐藏面板)

jquery - 我如何设置 mobile-jquery 的后退按钮的样式?

javascript - 单击更改图标,然后在下次单击时恢复为原始图标

jquery - 使用 tablesorter 设置列的默认排序

jQuery tablesorter 仅对某些行/列进行排序

javascript - jQuery tablesorter 按列 id 而不是列号排序

jQuery 表格排序器

javascript - 在单个 .on() 调用中绑定(bind)多个事件

jquery - 单击浏览器后退按钮时如何调用事件

javascript - Tablesorter 不排序(Jquery 1.8)