如何根据TD内容将CSS应用于TR的子项?

时间:2017-05-01 02:08:02

标签: javascript jquery css

我想根据<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/

1 个答案:

答案 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