我想根据<div>
内的内容在<td>
内隐藏<tr>
或<tr>
。
如果在Stackoverflow
中找到<tr>
,请隐藏.buttons
内的<tr>
。
这是我到目前为止所做的。
<table class="sites">
<tbody>
<tr>
<td>
<div class="name">Stackoverflow</div>
</td>
<td>
<div class="buttons">
buttons
</div>
</td>
</tr>
<tr>
<td>
<class name="">Stackexchange</class>
</td>
<td>
<div class="buttons">
buttons
</div>
</td>
</tr>
</tbody>
</table>
var t = $(".sites tr .name:contains('Stackoverflow')");
var d = t.parent('tr').children('.buttons');
d.css( "display", "none" );
我做了一个小提琴:https://jsfiddle.net/3jk8e3b2/3/
答案 0 :(得分:2)
你的遍历没有达到适当的水平。
parent()
只是直接父元素,children()
只是直接子节点
在您的情况下,.name
的父级是<td>
而不是<tr>
且按钮不是<tr>
的直接子级。
使用closest()
或parents()
允许上升多个级别。使用find()
允许更深入children()
尝试:
var t = $(".sites tr .name:contains('Stackoverflow')");
t.closest('tr').find('.buttons').hide();
的 DEMO 强>