私が持っている同様の問題の解決策を見つけたHERE.しかし、私はそれを自分のために働かせることはできません。私が遭遇した問題は、私が取り組んでいるサイトでモバイルメニューが開かれている間、垂直スクロールをロックしようとしたときでした。スクロールをロックすると、メニューが開かれるたびにページが先頭にジャンプしました。jQueryでスクロール位置を設定するには?
のjQuery:
timber.openDrawerMenu = function() {
var tempScrollTop = $(window).scrollTop();
var $mobileMenu = $('.nav-bar'),
$mobileMenuButton = $('#menu-opener'),
$body = $('body');
$mobileMenuButton.addClass('opened');
$mobileMenu.addClass('opened');
$body.addClass('opened-drawer');
// Make drawer a11y accessible
timber.cache.$navBar.attr('aria-hidden', 'false');
// Set focus on drawer
timber.trapFocus({
$container: timber.cache.$navBar,
namespace: 'drawer_focus'
});
// Escape key closes menu
timber.cache.$html.on('keyup.drawerMenu', function(evt) {
if (evt.keyCode == 27) {
timber.closeDrawerMenu();
}
});
console.log(tempScrollTop);
$(window).scrollTop(tempScrollTop);
}
私は、スクリプトが適切scrollTopスプライト値をcaputuringたし、実際にそれがあるかどうかを確認するために、console.log()
の文を追加しました。なんらかの理由でそれはスクロール位置を設定していないので、私はなぜ正確に把握できません。ここのお手伝いが大歓迎です。
'読む前にスクロールするブラウザの時間を与えるために、DOMの更新を待つ(0、x)は'のsetTimeoutを使用しています。クラスを追加してから、しばらく待ってからスクロールコードを実行してください。 – dandavis
@dandavisどこでそのコードを正確に使うのですか?しかし、実際にはクリックイベントの後に実際にスクロール位置を設定していないことが正しく測定されています。 –
jQueryで何を達成しようとしているのか分かりません。 –