1

私は2つのテーブルを持っています。

 <table border="1" class="a">
            <tr>
                <td>Value 1</td>
                <td>2</td>
            </tr>
            <tr>
                <td>Value 2</td>
                <td></td>
            </tr>
        </table>




        <table border="1"  class="b">
            <tr>
                <td>Value 1</td>
                <td>2</td>
            </tr>
            <tr>
                <td>Value 2</td>
                <td></td>
            </tr>
        </table>

テーブル#1に私は書きます:

  $(".a td:parent").fadeTo(1500, 0.3);

結果は次のとおりです。

ここに画像の説明を入力してください

フェードアウトされていない緑色のものに注意してください。

しかし、それは意味をなさない。私は「親に行く-これはTRであり、すべてをフェードする」と書いた

たぶん答えは、他の3つには値があるのに、内部には値がないからtd'sです。

だから私は(2番目の表で)テストしました:

$(".b tr").fadeTo(1500, 0.3);

そしてそれはすべてのTRをフェードさせました(最後のセルは空ですが)...

ここに画像の説明を入力してください

ここで何が起こっているのですか?

jsbin: http: //jsbin.com/ehacen/1/edit

4

3 に答える 3

3

問題は最初の例にあります。API( http://api.jquery.com/parent-selector/)によると、:parentコンテンツが含まれているものを選択します。したがって、最初のセレクターは「<td>コンテンツを含むすべてのを取得する」と言っているので、最初の3つだけを選択し<td>ます。のすべての親を選択するには<td>、次を使用します。

$('.a td').parent()

これがあなたのためにそれをクリアすることを願っています!

于 2012-08-12T10:18:45.000 に答える
2

セレクター:parentは、子を持つtdを調べます(この例では、3つのtdすべてに、最後のtdではなく子としてtextNodeがあります。:parentは、使用する必要のあるdomツリーを上っていません。

$(".a td").parent().fadeTo(1500, 0.3);

または、:parent:を使用する場合

$(".a tr:parent").fadeTo(1500, 0.3);

CSS4に親セレクターが付属するまで待つ必要があると思いますhttp://www.w3.org/TR/2011/WD-selectors4-20110929/

于 2012-08-12T10:20:55.217 に答える
0

より複雑なセレクターを構築している場合は、:has()セレクターを使用できます。

http://api.jquery.com/has-selector/

$(".a tr:has(td)").fadeTo(1500, 0.3);
于 2012-08-12T10:23:19.497 に答える