代码之家  ›  专栏  ›  技术社区  ›  Austin

jquery数据表从数据集中选择具有特定数据的行

  •  0
  • Austin  · 技术社区  · 6 年前

    我正在使用jquery数据表,并寻找一种使用按钮从包含特定值(在本例中为“foo”)的整个数据集中选择行的方法。

    这是我用来填充表的脚本:

    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/pdfmake-0.1.18/dt-1.10.12/b-1.2.2/b-html5-1.2.2/b-print-1.2.2/r-2.1.0/se-1.2.0/datatables.min.css"/>
    <script type="text/javascript" src="https://cdn.datatables.net/v/dt/pdfmake-0.1.18/dt-1.10.12/b-1.2.2/b-html5-1.2.2/b-print-1.2.2/r-2.1.0/se-1.2.0/datatables.min.js"></script>
    
    var oTable = $('#table').DataTable({
      'ajax': {
          url: 'script-to-return-json-row-data.php',
          type: "POST",
          dataSrc: function ( data ) {
                  return data;
          },
          'columns': [
            { 
                "data": "name",                   
                "render": function ( data, type, row ) {
                    return data;
            }
           ]
    
      }
    });
    

    示例数据集接收自 script-to-return-json-row-data.php 看起来像这样:

    [ ["name":"a-name-i-want-to-select","specific-value":"foo"], ["name":"a-name-i-dont-want-to-select","specific-value":"bar"] ]

    在过去,我可以使用下面的脚本来选择包含特定类的行

    $('#select-specific-values-button').click(function(e){
      oTable.rows( {search:'applied'} ).every(function(rowIdx, tableLoop, rowLoop){
            if($(this.node()).hasClass('class-name')){
                $(this.node()).addClass('selected');
            }
      });
    });
    

    不过,我想知道是否有一种方法可以修改上面的代码,只选择行数据所在的行 specific-value 等于 foo . 我能怎么做吗?

    我知道下面的代码不起作用,但这应该能让我很好地了解我要实现的目标:

    $('#select-specific-values-button').click(function(e){
      oTable.rows( {search:'applied'} ).every(function(rowIdx, tableLoop, rowLoop){
            // if($(this).rowIdx.data.specific-value == 'foo'){
            //     $(this.node()).addClass('selected');
            // }
      });
    });
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Austin    6 年前

    这最终对我起了作用:

    $('#select-specific-values-button').click(function(e){
       oTable.rows( {search:'applied'} ).every(function(rowIdx, tableLoop, rowLoop){
            if(oTable.row( rowIdx ).data().specific-value == 'foo'){
                 $(this.node()).addClass('selected'); 
            }
       });  
    });