我有一個導航的初始URL看起來是這樣的:jQuery的scrollTop的不與查詢字符串環節的工作
test.php?query=19
,我有像這樣<a href="#section-1">Section 1</a><a href="#section-2">Section 2</a><a href="#section-3">Section 3</a>
有3個部分我的網頁上的鏈接:
<section id="section-1"></section><section id="section-2"></section><section id="section-3"></section>
我正在使用這個jquery代碼從頁面頂部滾動到該部分(或用戶在p上年齡)到該部分的頂部,並且不會在我的網址中顯示#
標記。
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 2000);
return false;
}
}
});
});
我的問題是,這不會滾動到該部分。它只是去部分的底部,然後滾動到頂部和#
出現在我的網址。
我還有一個菜單上我的主網頁:
home.php
,我使用完全相同的jQuery代碼,它工作在該網頁。
我的問題是如何獲得的scrollTop的在我的test.php?query=19
頁工作像它在home.php
當我在一個像點擊test.php?query=19
我的網址更改爲:test.php?query=19#section-1
你在控制檯中看到的任何錯誤? – Dhiraj
你說你在菜單上有完全相同的代碼。我有兩個問題:1)這部分'$('a [href * =#]:not([href =#])')'是一樣的嗎?因爲您正在定位頁面中的每個鏈接,並且如果2)加載腳本兩次(菜單+此頁面),點擊處理程序會多次添加 – JohnKiller
*如果*您已在此處發佈* actual *代碼,則...它按原樣工作,並且你沒有問題(儘管該功能可能會簡化一點)。所以唯一的答案是這個問題在你發佈的位中是* not *。嘗試發佈你的實際'HTML'和'javascript' ...在發佈之前切出任何完全不相關的部分(但要確保問題仍然存在於你發佈的任何「最小」代碼中)。我敢打賭你會發現問題出在這個過程中,當你切出一些似乎完全不相關的部分;) – Mikk3lRo