質問: jqueryについて、$("+dd",this)について教えていただけ jqueryについて、$("+dd",this)について教えていただけませんでしょうか 【参考サイト】 http://ascii.jp/elem/000/000/498/498710/index-6.html 上記のページのアコーディオンメニューを作る記述において、 $(function(){ $("dd:not(:first)").css("display","none"); $("dl dt").click(function(){ if($("+dd",this).css("display")=="none"){ $("dd").slideup("slow"); $("+dd",this).slidedown("slow"); } }); }); の if($("+dd",this).css("display")=="none") の部分の"+dd"に何故、+が付くのでしょうか。 確かに上記の様に記述をすると上手く動作をしますので、正しいのだと 思うのですが、そうなる理由が解らなくて混乱してしまっています。 thisが示す$("dl dt")の下層の要素を指定するための記述ならば、 if($("this dd").css("display")=="none") として、$("dl dt")の下層にあるddという様な指定は出来ないのでしょうか。 まだ、ほとんどjqueryの記述ルールを把握していないので、お恥ずかしいのですが、 何卒、宜しくお願いいたします。
回答: >thisが示す$("dl dt")の下層の要素を指定するため ddはdtの下層ではなくdtの兄弟です そのため隣接セレクタを使う必要があります 別の書き方をするなら $(this).next() とか。 あと、記述ルールというか、 オブジェクトであるthisと、 文字列でしかないセレクタ を混同してしまっているようなのでその辺りを意識してみてはどうでしょう。