Jquery 隐藏 table 列不包含值
Jquery hide table column not containing value
如果 不 包含搜索值,我试图隐藏 table 中的一行。
这个有效:
<table class="mytable">
<tr>
<td>1001</td>
<td>apples</td>
</tr>
<tr>
<td>1002</td>
<td>bananas</td>
</tr>
</table>
<button id="mybutton">Button</button>
<button id="mybutton2">Button2</button>
这将通过隐藏所有行,然后显示我们想要的行来工作:
$('#mybutton').click(function(){
$('.mytable td').parent().hide();
$('.mytable td:contains("apples")').parent().show();
});
但我看到有一个使用 :not 选择器的更优雅(可能更有效)的解决方案,但我无法让它工作:
$('#mybutton2').click(function(){
$('.mytable td:not(:contains("apples"))').parent().hide();
});
我如何使用 :not 选择器使其工作,以便如果某行 不 包含苹果,它将被隐藏,留下所有包含苹果的行。
JS Fiddle: https://jsfiddle.net/ryy3tvob/
因为第一个 td
不包含任何行中的 apple
并且它将 select 所有第一个 td
所以它将隐藏它的父级。所以你需要使用 :contains()
作为 tr
The matching text can appear directly within the selected element, in any of that element's descendants, or a combination thereof. As with attribute value selectors, text inside the parentheses of :contains() can be written as a bare word or surrounded by quotation marks. The text must have matching case to be selected. ( Taken from https://api.jquery.com/contains-selector/ )
$('#mybutton2').click(function() {
$('.mytable tr:not(:contains("apples"))').hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table class="mytable">
<tr>
<td>1001</td>
<td>apples</td>
</tr>
<tr>
<td>1002</td>
<td>bananas</td>
</tr>
</table>
<button id="mybutton">Button</button>
<button id="mybutton2">Button2</button>
如果 不 包含搜索值,我试图隐藏 table 中的一行。
这个有效:
<table class="mytable">
<tr>
<td>1001</td>
<td>apples</td>
</tr>
<tr>
<td>1002</td>
<td>bananas</td>
</tr>
</table>
<button id="mybutton">Button</button>
<button id="mybutton2">Button2</button>
这将通过隐藏所有行,然后显示我们想要的行来工作:
$('#mybutton').click(function(){
$('.mytable td').parent().hide();
$('.mytable td:contains("apples")').parent().show();
});
但我看到有一个使用 :not 选择器的更优雅(可能更有效)的解决方案,但我无法让它工作:
$('#mybutton2').click(function(){
$('.mytable td:not(:contains("apples"))').parent().hide();
});
我如何使用 :not 选择器使其工作,以便如果某行 不 包含苹果,它将被隐藏,留下所有包含苹果的行。
JS Fiddle: https://jsfiddle.net/ryy3tvob/
因为第一个 td
不包含任何行中的 apple
并且它将 select 所有第一个 td
所以它将隐藏它的父级。所以你需要使用 :contains()
作为 tr
The matching text can appear directly within the selected element, in any of that element's descendants, or a combination thereof. As with attribute value selectors, text inside the parentheses of :contains() can be written as a bare word or surrounded by quotation marks. The text must have matching case to be selected. ( Taken from https://api.jquery.com/contains-selector/ )
$('#mybutton2').click(function() {
$('.mytable tr:not(:contains("apples"))').hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table class="mytable">
<tr>
<td>1001</td>
<td>apples</td>
</tr>
<tr>
<td>1002</td>
<td>bananas</td>
</tr>
</table>
<button id="mybutton">Button</button>
<button id="mybutton2">Button2</button>