我發現了一個類似問題的解決方案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);
}
我加入了console.log()
聲明,以查看是否腳本caputuring正確scrollTop的值,實際上它是。出於某種原因,它不是設置滾動位置,但我無法弄清楚爲什麼。任何幫助在這裏非常感謝。
使用'的setTimeout(X,0)'等待DOM刷新給瀏覽器的時間閱讀之前滾動。添加類(es),稍等片刻,然後執行您的滾動代碼,否則一目瞭然看起來不錯。 – dandavis
@dandavis我會在哪裏準確使用該代碼?但它正確測量,它實際上並不是在單擊事件之後設置滾動位置。 –
我無法真正理解你想用jQuery完成什麼。 –