任何人都知道如何卸载过滤器小部件而不破坏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);
}
})
})
答案 0 :(得分:0)
使用here(refreshWidget
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的原始版本。