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 を使用して親を選択し、そこからクラスを持たないすべての子 tdwba_topnavBGhide()それらすべてを選択することでしたが、選択部分の書き方がわかりません。

何か助けはありますか?:)

編集

その td 内に追加の tr と tds を持つ別のテーブル構造があることを追加するのを忘れました。

編集 2

うーん、id を持つ div を含むテーブルを含む別の tr を非表示にする必要があるようです。jquery 行を変更して、:has 構文で探す別のものを追加できますか?

  1. deep_div1 divを含むものと td class を含むものを除いて、他の tr を非表示にするにはどうすればよいwba_topnavBGですか?

この新しいひねりはまだこの質問に関連しているため、Stack Overflow で別の質問を作成したくありません。

4

1 に答える 1

6

:notおよび:has疑似セレクターを組み合わせることができます。

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

このセレクターは、 classtrの要素を含まないすべての要素に一致します。tdwba_topnavBG

ここでマークアップの例を確認してください。

編集:あなたのコメントに応えて、その中にテーブルがあり、の直接の子孫tdのみを選択したい場合は、親>子セレクターを使用する必要があります:tr.wba_main_table

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