【问题标题】:DataTables count rows by text in cellDataTables 按单元格中的文本计算行数
【发布时间】:2017-04-19 18:10:52
【问题描述】:

我有一个简单的 DataTable,当用户单击该行时,我将为其添加一个名为 selected 的类:

$("#datatable-buttons tbody").delegate("tr", "click", function (event) {
     var $row = $(event.target);
     if ($row[0].tagName !== "TR") $row = $row.parent();
     $row.toggleClass("selected");
     if (event.ctrlKey === false) {
        $row.toggleClass("selected");
        $row.siblings().removeClass("selected");
     }
});

在同一个函数中,我试图计算第二列不同于 --- 的行数

var clickedD = 0;
table.rows('.selected').every(function () {
      if (this.cell('.selected', 1).data() != "---")
          clickedD++;
 });

但是当有多行选择时,它只是使用此类的第一行。有没有办法让每行的第二个单元格不同于--- 时选择的行数(具有selected 类)?

【问题讨论】:

    标签: javascript jquery datatables


    【解决方案1】:

    您可以只使用row().data() 数组。并且更多地使用 API。这是一个更简化的版本:

    table.on('click', 'tbody tr', function() {
      table.row(this).nodes().to$().toggleClass('selected');
      var count = 0;
      table.rows('.selected').every(function() {
        if (table.row(this).data()[1] !== '---') count ++;
      })
      $('#count').text(count+' selected rows with #2 col different from ---')
    })
    

    演示 -> http://jsfiddle.net/q6d8wqLk/

    如果你有一个基于 JSON 的数据源,你可以使用

    if (table.row(this).data().secondColData !== '---') count ++;
    

    仅供参考delegate() is now deprecated.

    【讨论】:

    • 感谢您的回答!完美运行! :)
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 2015-10-29
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多