【jQuery】thisの親や子要素の指定方法[リライト版]
jQueryで、”this”の親要素、子要素(子孫要素)を指定する記述方法のメモ、リライト版です。
(元々はこちら)
親要素
thisの親要素を取得
$(this).parent()
“親要素を全て返す
“記述です。
近いものとして、”ルートを除く先祖要素を全て返す
“parents()や、”開始要素から最も近い親要素を選択
“するclosest()もあります。
参:
parent([expr]) – jQuery 日本語リファレンス
parents([expr]) – jQuery 日本語リファレンス
closest([expr]) – jQuery 日本語リファレンス
jQueryで親要素のスタイル変更 : JSをつらつらとダラダラと書く
子要素・子孫要素
thisの子要素、もしくは子孫要素(ここでは<ul>)を取得
子要素
$(this).children("ul")
子孫要素
$(this).find("ul")
$("ul",this)
それぞれのプチ解説
$(this).children("ul")
“直下にある子要素のみ
“を選択。”孫要素以下は対象外
“となります。
「”ul”」部分は絞り込みの条件式なので、この場合選択したい「ul」以外に子要素がなければ記述しなくても問題ないと思います。
参:children([expr]) – jQuery 日本語リファレンス
$(this).find("ul")
thisが持つ”全子孫要素から、指定条件式に合致するものを選択
“します。
直下の子要素だけでなく、子孫要素から条件(”ul”)に合うものを探すということですね。
参:find(expr) – jQuery 日本語リファレンス
$("ul",this)
公式の説明によると、”selector context is implemented with the .find() method, so $(‘span’, this) is equivalent to $(this).find(‘span’).
“とのことですので、行っている処理内容は、上のfind()と同じようです。
なので、子孫要素から条件に合うものを探すという処理になります。
参:jQuery(expression, context) – jQuery 日本語リファレンス
サンプル
自分のメモ用ですが、簡単なサンプルを書いたので載せておきます。
動作サンプル
また前エントリーのコメントにてmattari_pandaさんがつくってくださった計測用のサンプルもこちらにも載せておきます。(mattari_pandaさんご快諾ありがとうございます!)
速度測定サンプル
サンプルを見ていただければ、mattari_pandaさんのコメント内容にある、以下の点がわかるかと思います。
- “
$(‘ul’, this)はjQueryの中でfind()に展開しているようなので、今回のような場合はfindを使ったほうが若干ですがパフォーマンス的に良い
“ - “
$(this)を一回の処理の中で繰り返す場合はあらかじめ変数に入れておくと、処理の速度も速く
“なる
ご参考までに。
他参考URL:
jQueryでthisの子要素を取得するやり方いろいろ | Base Views
Thanks☆:
mattari_pandaさん、initiumさん、kzさん、understandardさん
以下おまけ
$("#dummy").css
上記のような記述は、”"以降、つまり範囲指定を省略しているようですね。
ドキュメント内から#dummyを探す、と。(jQuery 日本語リファレンスのサンプル3参照)
また、パッと見、似ていて私も誤解していたのですが、まったく違うので注意!
$("ul",this)
$("ul,this").css
後者は複数のセレクタを指定する記述です。
参:selector1, selector2, …, selectorN – jQuery 日本語リファレンス
最後に。
前エントリーよりは、リファレンス等を確認して載せてはおりますが、必ずしも上記の内容が正しいとは限りません。
不具合等の責任は負いかねますので、その点だけご留意いただければと思います。
私と同じようなjQuery初心者の方の参考になれば幸いです!