親のjQuery親


93

現在、要素の親の親を見つけようとしています。にあるリンクをクリックし<td>ていて、<tr>オブジェクトを取得したいのですが。

「$(this).parent()。parent()」が機能しないのはなぜですか?どうする?

ありがとう、
ブレンダン

編集:それは私の構文のエラーがすべてを捨てていたようです。"$(this).parent()。parent()"は実際には機能しますが、$(this).closest( 'tr')を使用するのは最も効率的なソリューションのようです。


1
親セレクターが機能しない理由を確認できるようにコードを投稿していただけませんか?
TStamper 2009年

回答:


221

最良の方法はおそらく使用するでしょうclosest

$(this).closest('tr');

ドキュメントをチェックしてください

Closestは、まず現在の要素を調べて、指定された式と一致するかどうかを確認します。一致する場合は、要素自体を返します。一致しない場合は、指定された式に一致する要素が見つかるまで、親ごとにドキュメントを走査し続けます。一致する要素が見つからない場合、何も返されません。


20

うまくいくはずです。$(this).parents(tag)を試すこともできます。ここで、tagは検索するタグです。

例えば:

$(this).parents("tr:first")

最も近い「チェーンを上る」trを見つけます。


9

それはうまくいくはずです...あなたは試すかもしれません

$(this).parents(':eq(1)');

.parents(selector)は、セレクターに一致するすべての祖先を取得することを示しています

と:eq(1)は、リストの1番目(ゼロから始まるため、2番目)の要素を見つけます


これを警告して、それがHTMLアンカータグであることを確認してください。やってみてください:alert( 'anchor html(' + $(this).html()+ ')');
Lathan、

6

このスニペットは過去に私のために実行しました:

$(this).parent().parent(); 

どこかに別の問題があるかどうかを確認するためにコードを投稿してください...


これに同意する。$(this).parent().parent()問題なく使用できます
DrewT 2016年


2

親に何らかのID /クラスがある場合は、parents()を使用できますが、filter()や他の方法で停止しない限り、<body>までのすべての親が得られます。

$(this).parents('.myClass');

これが誰かを助けることを願っています:)


1

$(this).parent()を$($(this).parent())のようなjQueryオブジェクトにラップしてみてください。有効なjqueryオブジェクトがあることを確認するために、これを行う必要があることがよくあります。そこから、親の親を手に入れるか、おそらくprev()を使用できるはずです。


8
これは完全に無意味です。あなたがしていることは、別のjQueryオブジェクトを作成することで時間を浪費しているだけです...
James

1
var getParentNode = function(elem, level) { 
    level = level || 1; 
    for (var i = 0; i < level; i++) {
        if (elem != null) {
            elem = elem.parentNode; 
        }
    }
    return elem; 
}

0

.closest() 同じ要素構成を持っている場合、特別に常に最適なオプションとは限りません。

<div>
    <div>
        <div>
        </div>
    </div>
</div>

あなたは親の親を行うことができ、それは非常に簡単です:

var parent = $('.myDiv').parent();
var parentParent = $(parent).parent();
var parentParentParent = $(parentParent).parent();

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.