隐藏tr,如果它的td:nth-​​child()第一个字母不包含字母

时间:2014-01-22 08:43:48

标签: javascript jquery html

如果td:nth-​​child(1)的第一个字母不包含字母D,则所有想要隐藏的tr, atm我的代码只是隐藏它,如果它的所有tds不包含字母D. HTML:

HTML

<table id="myTable">
    <thead>
        <tr><th>Name</th><th>Lastname</th></tr>
    </thead>

    <tbody>
        <tr><td>Zuri</td><td>Mam</td></tr>
        <tr><td>Dima</td><td>Mam</td></tr>
        <tr><td>Dato</td><td>Mik</td></tr>
        <tr><td>AMD</td><td>Phen</td></tr>
    </tbody>
</table>
<button id="hide">Filter by First letter D</button>
<button id="showAll">Show All</button>

的jQuery

$("#hide").click( function() { 
    $("#myTable tr:not(:has(th))").not(":contains(D)").hide();
});
$("#showAll").click( function() { 
    $("#myTable tr:not(:has(th))").show() 
});

工作JSFiddle。 请帮忙, 谢谢!

2 个答案:

答案 0 :(得分:6)

:contains()检查字符串是否出现在内容的任何位置,您可以使用.filter()过滤tr元素

$("#hide").click(function () {
    $("#myTable tbody tr").filter(function(){
        return $.trim($(this).find('td:first-child').text()).charAt(0) != 'D'
    }).hide();
});

演示:Fiddle

答案 1 :(得分:0)

试试这个解决方案:

$("#hide").click( function() { 
    $("#myTable tbody tr").each(function(){
        if($(this).find("td:first").text().substr(0,1).toUpperCase() == 'D'){   
            $(this).hide();
        }
    });       
});

$("#showAll").click( function() { $("#myTable tbody tr").show() });

http://jsfiddle.net/Pesulap/ryCm5/1/