在我看来,我有4张桌子。我正在为每个表使用jQuery Datatables,所以对于我在视图中显示的一条记录,它看起来像这样:
我所拥有的
var countAllTablesRows = $("table tbody.teu-tbody tr").length;
console.log("Total Rows In Every Table on Page - " + countAllTablesRows);
var rowCountMinusOne = countAllTablesRows - 1;
console.log("Total Rows In Every Table on Page Minus One - " + rowCountMinusOne);
我的目标
当用户单击“删除”链接时,我想计算每个表tbody元素中的所有行。但是,我只想对有实际数据的表行进行计数..而不是有一行说“表中没有数据”的表。
我当时在考虑使用.each()
仅获取不包含“表中没有可用数据”的表,但是我不确定如何进行攻击。
感谢您的帮助。
答案 0 :(得分:1)
在使用DataTables时,有一些datatable API选项可返回表中的行数。
rows().count()
是一种方法。如果要在特定情况下(例如,选定的行数)获取表行数,这很方便。
var table = $("#table-selector")
table.DataTable().rows().count()
.data()
是另一种方式。 .data()
将表中的所有数据作为数组返回,您可以从中简单地调用.length
来获取数组的长度。
var table = $("#table-selector")
table.DataTable().data().length
以上两种方法都以相同的方式工作。 .data()
只是返回表中的所有数据,而.rows()
可能会也可能不会返回所有数据,因为您可以为.rows()
函数提供特定的选择器。在这两种情况下,您都可以使用.length
或.count()
。您有一定的灵活性。
由于有多个表,您可以修改其中的任何一个以一次从所有表中获取数据。
var table = $("#table-selector, #table-selector-two, #table-selector-three")
table.DataTable().rows().count()
此代码段将提供表#table-selector,#table-selector-two和#table-selector-three 3的计数。如果您对所有这些人都有一个共同的阶层,那么这也将起作用。您没有提供HTML,因此我只能猜测您如何选择表格。
答案 1 :(得分:0)
您可以使用JQuery的':not
'和':contains
'来过滤行,如下所示:
var countAllTablesRows = $("table tbody.teu-tbody tr:not:contains(No data)").length;
这将过滤行,因此仅对不包含文本“ No data”的行进行计数。