我正在使用jQuery插件jquery-tablesorter-filter。它很棒。当我想要计算表被过滤后的行数时,我有问题。
$("#tblContainer").tablesorter({
debug: false,
sortList: [
[0, 0]
],
widgets: ['zebra']
}).tablesorterFilter({
filterContainer: $("#filterBox"),
filterColumns: [1, 2],
filterCaseSensitive: false
});
这是计算过滤行(当前在屏幕上的行)的代码。但它没有给我正确的结果。它给出了过滤行的最后计数,而不是当前计数。它总是给出一个关键行程的结果。
$("#filterBox").keyup(function () {
var textLength = $("#filterBox").val().length;
if (textLength > 0) {
var rowCount = $("#tblContainer tr:visible").length;
$("#countCourseRow").html(" found " + rowCount);
} else {
$("#countCourseRow").html("");
}
});
答案 0 :(得分:7)
内置事件有什么问题:http://mottie.github.com/tablesorter/docs/example-option-show-processing.html
示例如下所示:
$("#tblContainer").tablesorter({
debug: false,
sortList: [
[0, 0]
],
widgets: ['zebra']
}).bind('filterEnd', function() {
$("#countCourseRow").html("");
$("#countCourseRow").html("found " + $('#myTable tr:visible').length);
});
答案 1 :(得分:0)
只需编辑tablesorterFilter js文件即可添加回调函数:
在关闭return table;
doFilter()
之前的第147行添加此内容
if (jQuery.isFunction(filter.callback)){
filter.callback();
}
然后改变这个:
this.defaults = {
filterContainer: '#filter-box',
filterClearContainer: '#filter-clear-button',
filterColumns: null,
filterCaseSensitive: false,
filterWaitTime: 500,
filterFunction: has_words,
columns: []
};
到
this.defaults = {
filterContainer: '#filter-box',
filterClearContainer: '#filter-clear-button',
filterColumns: null,
filterCaseSensitive: false,
filterWaitTime: 500,
filterFunction: has_words,
columns: [],
callback: function(){}
};
现在你只需要在这里定义你的回调函数
}).tablesorterFilter({
filterContainer: $("#filterBox"),
filterColumns: [1, 2],
filterCaseSensitive: false,
callback: function(){
var rowCount = $("#tblContainer tr:visible").length;
$("#countCourseRow").html(" found " + rowCount);
}
});
这应该为你做:)
答案 2 :(得分:0)
您的脚本中可能存在逻辑错误,否则最简单的方法是获取可见行的长度。
$('#table_id tr:visible').length
答案 3 :(得分:0)
这对我有用:
jQuery('table').data("rowCount", jQuery('#table_id tbody tr:visible').length);
然后,
var rowCount = jQuery('table').data("rowCount");
答案 4 :(得分:0)
如果编写了这个可重用的 jQuery 函数,该函数应用 tablesorter 并在每个表下方添加一行,显示总行数和可见行数。它还在顶部添加了一个简短的帮助文本,链接到过滤器语法(实际上非常丰富和强大)。
props
是应用于 jQuery 选择器 selector
中指定的表的 tablesorter 属性。在其中添加所需的过滤选项(以及所有其他 tablesorter 选项/首选项)。
请注意,如果您想计算表中显示的数据项的数量,则按照其他一些答案的建议计算 tr
中的 table
数量,不会给您正确的号码。这将是一个多计数——最常见的是 2——因为它包括表格的原始标题行(如果存在)、任何页脚行以及由 tablesorter 动态添加到表格标题中的过滤器行。相反,计算 tr
的 table
中 tbody
的数量。
$
= jQuery
function sortTableFiltered( selector, props ) {
let $table = $( selector );
$table.before( '<div class="filterHelp" style="text-align:right; margin-bottom:-7px"><a href="https://mottie.github.io/tablesorter/docs/example-widget-filter.html" target="_blank">filter help</a></div>' );
$table.after( '<div class="rowCount" style="margin-top:-12px; margin-bottom:1.5ex"><i><var class="visibleRows">x</var> of <var class="totalRows">y</var> rows visible</i></div>' );
$table.tablesorter( props )
.bind( 'filterEnd', function( e, filter ) { // update visible and total row count
let $table = $( e.target );
let $tbody = $table.find( 'tbody' );
let totalRows = $tbody.find( 'tr' ).length;
let visibleRows = $tbody.find( 'tr:visible' ).length;
let $rowCount = $table.nextAll( '.rowCount' ).first();
$rowCount.find( 'var.totalRows' ).text( totalRows );
$rowCount.find( 'var.visibleRows' ).text( visibleRows );
});