質問: お世話になります。 ``` リスト1 リスト2 サブリスト2-1 サブリスト2-2 サブリスト2-3 リスト3 サブリスト3-1 サブリスト3-2 サブリスト3-3 ``` のようなリストがあり、普段は ``` ul li ul{ display:none; } ``` のようにサブリストを隠しています。 このリストを、以前教わった方法と同じように、 1) リストをクリックしたら、内包するサブリストを開く(slideToggle) 2) 開いているサブリストがあったら全て閉じる(hide) という動作を期待して、 ``` $(function(){ $("ul li").on("click", function() { $(this).children().nextUntil().slideToggle("fast").end() .siblings("li").children().nextUntil().hide("fast"); }); }); ``` というコードを書いたところ、1) サブリストを開くところまではうまくいったのですが、2) 既に開いているサブリストを閉じることができませんでした。.siblings以下に問題があることは推測できるのですが、考えられる限りで書いたいずれの組み合わせでも、期待する動作は実現できませんでした。 (何も起こらないとか、全て消えるとか、自分の下のリストが全て消えるとか....) どなたか、正しいコードを御教示いただけると嬉しいです。
回答: こんにちは。 ご質問のコードで、`.end()` と `.siblings("li")` の間に `.parent()` を入れて以下のようにすると、 意図通りになりませんか? 参考になれば幸いです。