私のjqueryアコーデオンが私の望むことをするのにちょっとした問題がありました。jQueryアコーディオン、クリックされたタブが上にスクロール開始されました。
私はいつもクリックされているタブをページの上から一定量のピクセルにスクロールさせたいと思います。しかし、アクティブなタブがクリックされているタブの上にあるときはいつでも、ページがすでに少しスクロールされていると、クリックされたタブのコンテンツの上部と部分がページの上部を超えてスクロールアップされます。
これは私が得たものである:ここでは
$(function() {
$("#accordion").accordion({
autoHeight: false,
collapsible: true,
heightStyle: "content",
active: 0,
animate: 300
});
$('#accordion h3').bind('click',function(){
theOffset = $(this).offset();
$('body,html').animate({
scrollTop: theOffset.top - 100
});
});
});
はfiddleは、「セクション2」拡大を持って、たとえば、
を私の問題を説明するためだ、下にスクロールして「セクション3」タブと、それをクリックしてくださいすべてのページをスクロールし、それ以外の方法でも動作します。
新しいタブを開く前にアクティブなタブを閉じると、うまくいきますので、これはトップの機能にスクロールしてしまうタブの高さに何かがあると想定しています!
誰かが助けてくれることを願っています。おそらくこれは間違った方法です。 jqueryのスキルが基本的なカットアンドペーストの理解に限定されているため、実際に何をしているのか分かりません。 ^^
おかげさまで、ありがとうございました。 :)
乾杯
はい! :Dありがとう、私は実際のスクロールイベントを遅らせようとしましたが運がなかったのですが、うまくいきました!優れた! – Andreas
うまく動作します!私の唯一の疑問はなぜあなたは 'var self = this;'をやっているのですか?私は 'var theOffset = $(this).offset();'を使ってやろうとしましたが、うまくいきませんでした。どんな考え? – Technotronic
@Technotronic - setTimeoutコールバック内の 'this'の値は外部ではないためです。 – techfoobar