2

当我选择一个类别时,我试图让表格显示相应的内容。我已经成功实施了。但是,如果我在选择一个类别后在搜索框中搜索(使用快速搜索插件),它将搜索表中的所有行,而不是只搜索相应的内容。我该怎么做,它只会搜索相应的项目?

Here is the demo

http://jsfiddle.net/azsuA/

更新的问题

现在我在表中的可乐下面有一个子行。我想知道为什么它被算作“filteredRows”?如何使“filteredRows”不包括表中的子行?出于某种原因,如果我选择“未分类”,它会显示“1 - 1/ 1 (1) / 14”,而应该是“- / (14)”

Another demo

http://jsfiddle.net/azsuA/4/

4

1 回答 1

2

您需要禁用,然后重新启用对新类别的快速搜索(更新的演示)。首先像这样设置快速搜索:

/**
 *  Filter the table.
 *  Resource: https://github.com/riklomas/quicksearch
 */
var quickSearchOptions = {
    show: function () {
        $(this).show().removeClass('filtered');
        $('table').trigger('pageSet'); // reset to page 1 & update display
    },
    hide: function () {
        $(this).hide().addClass('filtered');
        $('table').trigger('pageSet'); // reset to page 1 & update display
    },
    onAfter: function () {
        $('table').trigger('update.pager');
    }
};
$('.search').quicksearch('table tbody tr', quickSearchOptions);

然后,当您选择一个类别时,禁用然后重新启用快速搜索:

/**
 *  Show the corresponding contents when a category is clicked.
 *  Resource: http://tinyurl.com/jvneeey
 */
$('ul').on('click', 'li', function () {
    var filters = [],
        $t = $(this),
        col = $t.data('filter-column'), // zero-based index
        txt = $t.data('filter-text') || $t.text(); // text to add to filter

    filters[col] = txt;
    // using "table.hasFilters" here to make sure we aren't targetting a sticky header
    $.tablesorter.setFilters($('table.hasFilters'), filters, true); // new v2.9
    // disable previous quicksearch
    $('.search')
        .off('keyup')
        .quicksearch('table tbody tr:not(.filtered)', quickSearchOptions);
});
于 2013-11-28T00:57:28.053 回答