所以我试图隐藏那个tr中的锚没有id为x的表行。
我有这个,但它不起作用,选择错误或不可能这样做?
<table><tr><td><a id="x">X</a></td></tr></table>
...
$("table tr:not(td a#x)").hide();
由于
答案 0 :(得分:2)
您必须将x
ID更改为班级。在页面上不可能有超过1个相同的ID。但是使用课程,你可以使用filter
来摆脱你不想要的结果。 !$('td a', this).hasClass('x');
会在tr中找到td a
并检查它是否有类。接下来它会返回相反的结果,因为您只想隐藏不拥有tr
的{{1}}。
a.x
答案 1 :(得分:2)
1)ID不能在单个html页面上重复使用多次 2)改为使用类
您可以使用CSS:not或jQuery .not()作为选择器。
这个jsperf link CSS证明了性能方面:不是选择器更快。
$('table tr:not(:has(".x"))').hide();
主选择器使用CSS :not
选择器选择所有表tr,然后使用:has
jQuery选择器检查是否有任何子元素具有.x类。我建议你编辑你的html结构,除非你在一个html页面上只有一个实例,否则不要使用id。
这类似于用户&#39; underfined&#39;回答,但它稍快。
我为你创建了一个例子:
DEMO:http://jsfiddle.net/7ceRx/4/
如果您想使用ID而不是类:
$('table tr:not(:has("#x"))').hide();
答案 2 :(得分:2)
您还可以使用not
方法和:has
选择器:
$("table tr") // all `tr` elements
.not(':has(#x)') // not having `#x` descendant
.hide();
答案 3 :(得分:0)
您不能使用具有相同值的多个ID。使用类
所以:
<table><tr><td><a class="x">X</a></td></tr></table>
然后您可以使用以下方法轻松隐藏它们:
$('a:not(.x)').closest('tr').hide();
答案 4 :(得分:-1)
或者你可以通过DOM,.closest();
$("#x"). closest('tr').hide(); // this will hide the entire row
答案 5 :(得分:-2)
我找到了解决方案
HTML
<table border="1" style="border:1px solid #FFCC00;color:#000000;width:100%" cellpadding="3" cellspacing="3">
<tr>
<td><a id="x">Table Cell 11</a></td>
<td><a id="x">Table Cell 12 </a></td>
</tr>
<tr>
<td><a id="y">Table Cell 21 </a></td>
<td><a id="x">Table Cell 22</a></td>
</tr>
<tr>
<td>Table Cell</td>
<td>Table Cell</td>
</tr>
</table>
<br>
<button id="button">Hide all a tag with id=x</button>
JS
$(document).on('click', 'button', function(e){
// $('a#x').html($('a#x').text(' '));
$("a#x").hide();
//console.log('onClick func');
})