从Tablesorter卸载Filter Widget

时间:2015-01-06 21:36:14

标签: jquery tablesorter

任何人都知道如何卸载过滤器小部件而不破坏tablesorter并在没有过滤器小部件的情况下重新启用它?

这是我正在使用的代码,这是非常糟糕和笨重的。

<a href="#" data-active="1" class="togglefilter btn btn-primary">Toggle Filter</a>


$(function(){
        $(".togglefilter").click(function(){
            var active = $(this).data('active');
            if(active == 1 ) 
            {
                $("table").trigger('destroy');
                    $("table").tablesorter({
                            theme : "bootstrap",
                            widthFixed : true,
                            headerTemplate : '{content} {icon}', // new in v2.7. Needed to add the bootstrap icon!
                            widgets : ["uitheme","zebra"],

                            widgetOptions : {
                                zebra : ["even", "odd"],
                                filter_reset : ".reset"
                            }
                });
                $(this).data('active', 0);  
            }
            else 
            {
                $("table").trigger('destroy');
                $("table").tablesorter({
                            theme : "bootstrap",
                            widthFixed : true,
                            headerTemplate : '{content} {icon}', // new in v2.7. Needed to add the bootstrap icon!
                            widgets : ["uitheme", "filter", "zebra"],

                            widgetOptions : {
                                zebra : ["even", "odd"],
                                filter_reset : ".reset"
                            }
                });

                $(this).data('active', 1);
            }
        })
    })

1 个答案:

答案 0 :(得分:0)

使用hererefreshWidget method)回答demo

var $table = $("table").tablesorter({
    theme: "bootstrap",
    widthFixed: true,
    headerTemplate: "{content} {icon}",
    widgets: ["uitheme", "filter", "zebra"],
    widgetOptions: {
        filter_reset: ".reset"
    }
});

$('button').click(function(){
    $(this).toggleClass('nofilter');
    var widgets = ['uitheme', 'zebra'],
        noFilter = !$(this).hasClass('nofilter');
    if (noFilter) {
        widgets.push('filter');
    }
    $table[0].config.widgets = widgets;
    // refresh widgets
    $table.trigger('refreshWidgets');
    // hide filter reset button
    $('.reset').toggle(noFilter);
});

请注意,此代码不适用于tablesorter的原始版本。