【问题标题】:JQuery filter DataTable rows by row tagJQuery 按行标签过滤 DataTable 行
【发布时间】:2020-06-03 20:49:07
【问题描述】:

我有一个 DataTable,其中每一行都有一个标签。

<table id="mytable" class="table table-striped table-bordered dt-responsive" width="100%">
    <thead>
        <tr>
            <th>Column1</th>
            <th>Column2</th>
        </tr>
    </thead>
    <tbody>
        <tr mytag = "tag1">
            <td>...</td>
            <td>...</td>
        </tr>
        <tr mytag = "tag2">
            <td>...</td>
            <td>...</td>
        </tr>
    </tbody>
</table>

有一个包含所有标签的选择框。

<select id="select_tag" class="select2-original">           
    <option value="tag1">tag1</option>
    <option value="tag2">tag2</option>              
</select>

And when a tag is selected, I want to filter the table and only display the rows with the tag but what I did is not working.

var mytable= $('#mytable').DataTable();
$('#select_tag').on('change', function () {
  var tagvalue = this.value;
  mytable
    .rows(function (idx, data, node) {
        return node.getAttribute("mytag") == tagvalue? true : false;
     })
    .draw();
})

也尝试过 .hide(),添加 .data()...目前没有任何效果...

【问题讨论】:

    标签: javascript html jquery datatables


    【解决方案1】:

    HTML

    <div class="row">
      <div class="col-md-4 offset-md-4">
      <div class="form-control">
        <label>Filter</label>
        <select id="select_tag" class="form-control select2-original">           
        <option value="tag1">tag1</option>
        <option value="tag2">tag2</option>              
    </select>
      </div>
      </div>
    
    
    </div>
    
    <table id="mytable" class="table table-striped table-bordered dt-responsive" width="100%">
        <thead>
            <tr>
                <th>Column1</th>
                <th>Column2</th>
            </tr>
        </thead>
        <tbody>
            <tr data-mytag = "tag1">
                <td>1</td>
                <td>Ram</td>
            </tr>
            <tr data-mytag = "tag2">
                <td>2</td>
                <td>Shiva</td>
            </tr>
            <tr data-mytag = "tag2">
                  <td>3</td>
                  <td>Vishnu</td>
             </tr>
            <tr data-mytag = "tag1">
                <td>4</td>
                <td>Sita</td>
            </tr>
        </tbody>
    </table>
    

    JS

    var mytable= $('#mytable').DataTable();
    $('#select_tag').on('change', function () {
      mytable.draw();
    });
    
    $.fn.dataTable.ext.search.push(
         function( settings, searchData, index, rowData, counter ) {
           var row = mytable.row(index).node();
           var filterValue = $(row).data('mytag');
           var e = document.getElementById("select_tag");
           var filter = e.options[e.selectedIndex].value;
           if(filterValue == filter)
              return true;
    
         }
    );
    

    CODEPEN Link

    More Info on Search Extension

    【讨论】:

    • 这太棒了!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2016-07-29
    • 2011-03-28
    • 2011-05-16
    • 1970-01-01
    • 2016-12-18
    相关资源
    最近更新 更多