2016-05-21 2 views
0

要素の子を探しているときは、次の行を使います。反対方向に行くとき祖先を探すときにparent()に相当するもの

var myself = $(donkey); 
var myProblems = myself.children("*"); 
var notMyProblems = myself.find("*"); 

しかし、私は、以下の行を使用することができますが、私は方法を見つけるために、再発同等見つかっていません。そんなことはないの?

var myself = $(donkey); 
var problemCreator = myself.parent(); 

は一例として、私がクリックされたボタンが含まれているスパンを含んで除数を含む行を含むテーブル要素を見つけるしたいと思います。私はこのようなことをすることができます。

var clickaroo = $(event.target); 
var holder = clickaroo.parent().parent().parent().parent().parent(); 

はしかし、それは醜いとボタンが予期しない、または予期せぬ余分のdivまたはスパンでネストされている場合には、壊れやすいです。私はこのようなものを使用したいと思います。

var clickaroo = $(event.target); 
var holder = clickaroo.superParent("table"); 

私はgooglearchedしましたが、nadaを取得しました。間違ったキーワードを使用していますか、そのような機能はありませんか?

+0

を行うことができますので、私はあなたが最も接近をしたいと思う:https://api.jquery.com/closest/ – chiliNUT

+0

これは**正確**私が探していたものです。私の意見では直感的ではない名前。私は答えとしてそれを受け入れることができるように、返信として投稿する必要があります。 –

答えて

2

お探しの方法はclosest()です。

findMeの要素をターゲティングする場合は、次の5つの方法を使用できます。

var self = $("#myMyselfAndI"); 
var oneLevelDown = self.children(".findMe"); 
var anyLevelDown = self.find(".findMe"); 
var oneLevelUp = self.parent(); 
var anyLevelUp = self.closest(".findMe"); 
var allUppwards = self.parents(); 
1

あなたがDOMに上向きに検索したい場合は、いくつかのオプションがあります。 .parent()を使用すると、ノードの直接の親が検索されますが、parents(selector)を使用した場合、検索はツリーを上に移動し、すべての一致を返します。代わりにfindのあなたは、この

var myself = $(donkey); 
var parents = myself.parents(); 
+0

あなたは正しいです。しかし、**上向き**は常に、レベルごとに単一の親要素を生成します(正確には、1つの要素は現在の要素の祖先でなければなりません)。ほとんどの場合、条件を満たす先祖の最初の**発生を見つける必要があるので、* nearest()*はより良い代替案に見えます。それにもかかわらず、あなたの答えは正しいです - しかし、他の答えを見てください。 –

+0

@KonradVilterstenはいあなたの投稿( 'children'と' find')で使った両方のメソッドが正確にそのように動作するので、省略しました。 1つではないすべてのマッチを返す –

関連する問題