【问题标题】:Filtering a table with jQuery (from ... to)使用 jQuery 过滤表(从 ... 到)
【发布时间】:2014-01-16 19:57:07
【问题描述】:

说到 jQuery,我还是个新手。但我有这件事我需要做。我知道可以使用各种插件来简化它,但这不是重点。

我有一个简单的 HTML 表格,我正在过滤结果(在示例中我按作者字段进行过滤),但我如何才能准确地为 1950 年到 1960 年制作一个过滤器?有没有简单的方法来编辑我的代码来做到这一点?我想不出一个解决方案,虽然我觉得应该很简单。

另外,有没有办法使过滤不区分大小写? 提前致谢!

<input type="text" id="filter-input"  value=""/><br/>
<table class="table-class">
<tr>
    <th>Bookname</th><th>Author</th><th>Publish date</th>
</tr>
<tr>
    <td>Exaple</td><td>Matt</td><td>1951</td>
</tr>
<tr>
   <td>Example2</td><td>John</td><td>1990</td>
</tr>
    <tr>
   <td>Example3</td><td>Ted</td><td>1955</td>
</tr>
</table>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
var filter = $("#filter-input");
filter.keyup(function(e) {
    var author = $(this).val();
    $('.table-class tr:not(:first)').filter(function() {
        if (!$(this).find('td:eq(1)').is(':contains("' + author + '")')) {
            return true;
        }
        else {
            $(this).show();
            return false;
        }
    }).hide();
});
</script>

【问题讨论】:

    标签: jquery html filtering


    【解决方案1】:

    您可以按您喜欢的任何内容进行过滤,按年份进行过滤,您可以执行以下操作:

    $('.table-class tr:not(:first)').filter(function() {
    
        var txt  = $('td', this).last().text(),
            year = parseInt(txt, 10);
    
        return year > 1950 || year < 1960
    
    }).hide();
    

    使其不区分大小写:

    $('.table-class tr:not(:first)').filter(function() {
    
        var txt =  $('td', this).eq(1).text().toLowerCase();
    
        return txt.indexOf(author.toLowerCase()) != -1;
    
    }).hide();
    

    【讨论】:

    • 谢谢,我会尝试在我的代码中使用它。还是得好好想想!
    猜你喜欢
    • 2018-03-17
    • 2011-12-18
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多