読者です 読者をやめる 読者になる 読者になる

ふるつき

記事と内容がないです

指定した要素が、ある要素の子要素かどうかを調べる

 何を言っているかわからないかもしれませんが、

<div id="hoge">
  <div id="piyo"></div>
</div>

 というソースコードで、piyoからたどってhogeが親にあるかどうかを調べたい、というときです。親要素を取得するときはparentsやclosestを使うのが一般的なようですが、やはりこれを使います。

 答え(の一つ)はこうです。

if ($('#piyo').closest('#hoge').length) {
  // 見つかった時
} else {
  // 見つからなかった時
}

closestは、0または1個の要素を含むjQueryオブジェクトを返すらしい(見つからなかった時は0個、見つかったらその要素1個)ので、要素数をしらべてやります。javascriptでは、Boolean(0)はfalse、Boolean(1)はtrueですから上記のように書けますが、ちょっと冗長に書きたければ==1などしても良いと思います。

 P.S.  もしかして:上からたどればfind一発なんじゃあないでしょうか。あ、でもfindの引数にthisとか突っ込めなさそう……。  気になるので確かめましたが、findの引数にjQueryオブジェクト書けますし、こっちのほうが良さそうかもです。

if ($('#hoge').find('#piyo').length) {
  // 見つかった時
} else {
  // 見つからなかった時
}

 こんかいはfindの引数にセレクタ使いましたが、jQueryオブジェクト突っ込めるので、$(this)とかも大丈夫です。