複数あるアコーディオンから一つクリックしたとき、クリックしたアコーディオンパネルへスクロールしたいのですが、
クリックしたとき閉じた状態でアコーディオンパネルまでの高さを取得してしまっており、クリックしたアコーディオンパネルが開くと同時にスクロールするため、変なところに画面がいってしまいます。
どうにか開いてから高さ取得を行って、スクロールするなんてことはできないのでしょうか?
<dl class="toggle"> <dt class="main_toggle">Aタイトル</dt> <dd> コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ </dd> <dt class="main_toggle">Bタイトル</dt> <dd> コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ、コンテンツ </dd> </dl>
jQuery
$(function(){ $('.main_toggle').click(function() { // メニュー表示/非表示 $(this).next('dd').slideToggle('fast'); $(this).toggleClass('main_open'); $("html, body").animate({scrollTop:$('.main_open').offset().top}, 500); // メニューをクリックしたら他のメニューを閉じる $('.main_toggle').next('dd').not($(this).next('dd')).slideUp(); $('.main_toggle').not($(this)).removeClass('main_open'); }); });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。