1

我不知道如何查询这个。

我有一个看起来像这样的表结构:

<table class="wba_main_table" align="center" border="0" cellpadding="0" cellspacing="0" width="">
      <tbody>
        <tr>
          <td style="display: none;" id="wba_logo_bg">
          </td>
        </tr>
        <tr>
          <td style="display: none;" class="line">
          </td>
        </tr>
        <tr>
          <td class="wba_topnavBG">
          <table>
          <tr><td>bla bla bla</td></tr> 
          </table>
          </td>
        </tr>
        <tr>
          <td style="display: none;" class="line">
          </td>
        </tr>
        <tr style="display: none;" class="greyBar">
          <td>
          </td>
        </tr>
        <tr>
          <td style="display: none;" class="line">
          </td>
        </tr>
        <tr>
          <td style="display: none;" class="lightGreyBar">
          </td>
        </tr>
        <tr>
             <td><table><tbody><tr><td>
                 <div id="deep_div1"></div>
             </td></tr></tbody></table></td>
        </tr>
</table>

我想要做的是隐藏所有 tr 除了包含wba_topnavBG. 我的策略是使用wba_logo_bgas id 并选择父母,然后从那里选择所有没有班级的孩子 td wba_topnavBGhide()但我不知道如何编写选择部分。

有什么帮助吗?:)

编辑

忘了在那个 td 里面添加另一个表结构,它有更多的 tr 和 tds。

编辑 2

嗯,现在看来我必须隐藏另一个 tr,其中包含一个表,该表包含一个带有 id 的 div。可以修改 jquery 行以添加要在其 :has 语法中查找的其他内容吗?

  1. deep_div1 除了包含 div的 tr 和具有 td 类 的 tr 之外,我如何隐藏其他 tr wba_topnavBG

由于这个新的转折仍然与这个问题有关,我不想在 Stack Overflow 中创建另一个问题。

4

1 回答 1

6

您可以组合:not:has伪选择器:

$('.wba_main_table tr:not(:has(td.wba_topnavBG))').hide();

此选择器将匹配所有tr不包含tdclass 元素的元素wba_topnavBG

在此处检查带有您的标记的示例。

编辑:针对您的评论,如果您在其中有一个表td,并且您只想选择 的直接tr后代.wba_main_table,则应使用parent > child选择器:

$('.wba_main_table > tr:not(:has(td.wba_topnavBG))').hide();
于 2009-11-23T01:22:47.160 回答