jQueryでthisの子要素を取得するやり方いろいろ
スポンサーリンクjQueryを使っていて、thisとその子要素を同時に指定したい場合がある。
結構いろんなやり方があるみたいで、取りあえず使いやすそうなので下の3通り。
$("hoge",this)
$(this).children("hoge")
$(this).find("hoge")
一番上がシンプルでいいかと思うんですが、取得したいthis直下の要素名をthisの手前に書くんですね…
使いどころは多そうですが、例えば下みたいなの。「Click1」をクリックしたらその直下の<div>が隠れるようにしたい場合とか。
<ul> <li>Click1 <div> <h2>Menu1</h2> <p>text1</p> </div> </li> <li>Click2 <div> <li>Menu2</li> <li>text2</li> </div> </li> </ul>
普通に$("li").click(function(){$("div").slideToggle();})
では全ての<div>要素が選択されてしまうので、thisを組み合わせてクリックされた<li>直下の<div>だけを選びたいと。
$("li").click(function(){ $("div",this).slideToggle(); });
$("li").click(function(){ $(this).children("div").slideToggle(); });
$("li").click(function(){ $(this).find("div").slideToggle(); });
ということみたいです。
一番上の$("hoge",this)
という書き方のケースで、これを逆にして$(this,"hoge")
とすると、thisの親要素を指定できる――かというとそんなことはなく、単にthisだけが選ばれます。そういうもんらしい。
ということで実例。
サンプル
- クリックで開閉します
Menu
text
- クリックで開閉します
Menu
text
<ul id="testcode"> <li>クリックで開閉します <div> <h3>Menu</h3> <p>text</p> </div> </li> <li>クリックで開閉します <div> <h3>Menu</h3> <p>text</p> </div> </li> </ul> </div> <script type="text/javascript"> ;jQuery(function($){ $("#testcode li").click(function(){ $("div",this).slideToggle(); }); });
スポンサーリンク
スポンサーリンク