複数のアコーディオンがあるとき、全部開くとすごいことになるので、1つ開いたら他のアコーディオンは閉じるようにしてほしいというご要望。
ソースは以下の通り
1 2 3 4 5 6 7 8 |
var parent = $('dt'); parent.each(function(){ var self = $(this); self.on('click',function(){ parent.not(self).next('dd').slideUp(300); self.next('dd').slideToggle(300); }); }); |
dtをクリックしたら、その次のddがslideToggleするよというコードですが、クリックしてないdtの次のddは閉じるようにしてやります。
ポイントは、$(this)を変数’self’に格納して使いやすくしたうえで、‘.not(self)’で「$(this)以外」という指定をしている点。$(this)も変数に格納できるんですね!これに気づけばいろいろ捗りそう。
現場からは以上です。