计入多个表格

时间:2018-09-19 16:44:57

标签: javascript jquery

在我看来,我有4张桌子。我正在为每个表使用jQuery Datatables,所以对于我在视图中显示的一条记录,它看起来像这样:

enter image description here

我所拥有的

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()仅获取不包含“表中没有可用数据”的表,但是我不确定如何进行攻击。

感谢您的帮助。

2 个答案:

答案 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”的行进行计数。