我想在检查多列中可接受的值后隐藏表行。
该表将是:
<table id="my-table>
<tr><td class="name">John</td><td class="lastname">Doe</td></tr>
<tr><td class="name">Ann</td><td class="lastname">Doe</td></tr>
<tr><td class="name">John</td><td class="lastname">Smith</td></tr>
</table>
根据我到目前为止的研究(以及post),要隐藏除John Doe之外的所有人,都需要以下Jquery短语:
$("#my-table td.name:not(:contains('John')):td.lastname:not(:contains('Doe'))").parent().hide();
但是Jquery不喜欢这样,并说
Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: td
什么是正确的方法?
同样,我想了解如何进行更复杂的查询,例如:
Hide all rows with 'first name' containing 'a' OR 'b' AND 'last name' containing 'x' OR 'y'
。 最佳答案
迭代每个tr
,然后检查每个first
和last
td
。
$( "tr" ).each( function( index, val ){
if($(this).find("td:first-child").text() == 'John' && $(this).find("td:last-child").text() == 'Doe') {
$(this).hide();
}
});
Fiddle
更新:隐藏除John Doe之外的所有人
$( "tr" ).each( function( index, val ){
if($(this).find("td:first-child").text() != 'John' || $(this).find("td:last-child").text() != 'Doe') {
$(this).hide();
}
});
Fiddle