0

私はこの単純なテーブルを持っています(ネストされています)

 <table border="1px">
            <tr>
                <th>kkkk</th>
                <th>mmmm</th>
            </tr>
            <tr>
                <td>a</td>
                <td>a</td>
            </tr>
            <tr>
                <td>a</td>
                <td>a</td>
            </tr>
            <tr>
                <td>a</td>
                <td>
                  <table border="1px" style="margin:10px">
                        <tr>
                            <th>xxxx</th>
                          <th style="background-color:yellow">yyyy</th>
                        </tr>
                        <tr>
                            <td>a</td>
                            <td>a</td>
                        </tr>
                        <tr>
                            <td>a</td>
                            <td>a</td>
                        </tr>
                        <tr>
                          <td >a</td>
                            <td  style="background-color:red;" class="theTd">a</td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>

ここに画像の説明を入力

(ここにはテーブル ID はありません)

redareaをクリックして、値が入っている行を見つけたい。yellow

のインデックスを取得するのに問題はありませんTH

問題は、メソッドのみで実行したいということですParents()-赤いボックスには、.... xxx、yyy行とkkk、mmm行...を持つ2つが表示されます... parents TR'sTH

何かのようなもの :

  alert( $(".theTd").parents("first tr  parent which contains th's").....);

正しいセレクタ構文は何ですか?

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

編集

普通のparent().parent()....その .theTd中にラッパーDivを含めることができるので、その中にはありません...-したがって、ここの親はDIVになります。(これは論理を傷つけます....)

4

3 に答える 3

0

parents()選択した要素のすべての親を選択しますparentsUntil。代わりに次を使用できます。

$(".theTd").parentsUntil('table').find('th[style^=background]')

jsBin

またはclosest()方法:

$(".theTd").closest('table').find('tr:has("th")').foo()
于 2012-08-12T12:59:42.617 に答える
0

このようなものはどうですか?

$('.theTd').click(function(){
    alert($(this).parent().parent().find('tr > th:nth-child(2)').html());
});

(ここで動作することを確認してください: http://jsfiddle.net/Te3QB/1/ )

更新:.closest()セレクターを使用する方が良い場合もあります:

$('.theTd').click(function(){
    alert($(this).closest('table').find('tr > th:nth-child(2)').html());
});

.closest()セレクターに一致する最初の要素を取得します。現在の要素から始まり、DOM ツリーを上に向かって進みます。

于 2012-08-12T12:53:40.947 に答える
0

tr を取得するには、これを試してください。

$(".theTd").closest("table").find("tr");

番目はもう少し厄介です。nth-child が必要です。そのためには、インデックスが必要です。

$(this).closest('table').find('tr th:nth-child('+ ($(this).index()+1) +')');
于 2012-08-12T13:09:32.890 に答える