首页 > 解决方案 > 数据表插件中允许分页时,Jquery查找功能不起作用

问题描述

在实现其他情况之前,我成功地使用了数据表,但是当我启用分页时,我在循环其他行时遇到了问题。

我正在使用使用 Jquery 的查找函数来循环遍历表中的行,但它只遍历显示的行并且不会转到数据表的第二页。

这是一个工作小提琴https://jsfiddle.net/czarluc/5cm7rgvy/

这是我使用的功能。

function getTotalRows(){
  var counter = 0;
    $("#item_table").find('tr.tablerow').each(function (i, el) {
      counter += 1;
    });
  return counter
  }

总共有 20 行,但是当我执行该函数时,它只返回 5。

是否有任何替代功能或实现可用?

编辑:如果我禁用了分页,这将正常工作,但我只想看看如何使它在启用分页的情况下工作。

标签: javascriptjquerydatatablesjquery-plugins

解决方案


看来我使用了错误的功能。我提出这个以防有人遇到同样的问题。

要访问 Datatable 中的行,请使用 rows().node() 函数而不是 Jquery find 函数,然后使用 foreach 函数遍历行。还将参考数据存储到变量中,然后使用它来访问 rows().node() 函数。

这是正确的代码。

var table = $("#item_table").DataTable({
    pageLength : 5,
    lengthMenu: [[5, 10, 20, 50], [5, 10, 20, 50]],
    "columnDefs": [ {"className": "text-center", "targets": "_all"} ]
  });

function getTotalRowsv2(){
  var counter = 0;
    $(table.rows().nodes()).each(function(i, el){
      counter += 1;
    });
  return counter;
  }

无论分页如何,此函数都会遍历所有行。它还按预期返回 20。这是文档链接。https://datatables.net/reference/api/rows().nodes()


推荐阅读