我有一個hashchange功能設置爲顯示/隱藏關於頁面的不同部分沒有7個單獨的頁面。這一切都很好,事實上,當屏幕上顯示相關內容時,只有一件小事讓我煩惱,例如:#about01
如果再次單擊菜單按鈕,瀏覽器跳轉到此div的頂部,不想發生。
這裏是我的jQuery:jQuery的:hashchange,防止跳轉到散列
jQuery(document).ready(function(){
jQuery(window).on('hashchange', function(){
var hashFound = determineContent();
if(hashFound) return false;
});
function determineContent(){
var hash = window.location.hash;
jQuery('.about').hide();
jQuery('.sub-menu').each(function(){
if (jQuery(this).attr('hook') === hash.replace('#about', '')) {
jQuery('#about'+jQuery(this).attr('hook')).fadeIn();
return true;
}
});
jQuery('html, body').animate({scrollTop:0}, 'slow');
return false;
}
determineContent();
});
HTML:
<div id="sub-menu">
<li id="sub-menu-01" class="sub-menu" hook="01"><a href="#about01">TEST</a></li>
<li id="sub-menu-02" class="sub-menu" hook="02"><a href="#about02">TEST</a></li>
<li id="sub-menu-03" class="sub-menu" hook="03"><a href="#about03">TEST</a></li>
<li id="sub-menu-04" class="sub-menu" hook="04"><a href="#about04">TEST</a></li>
<li id="sub-menu-05" class="sub-menu" hook="05"><a href="#about05">TEST</a></li>
<li id="sub-menu-06" class="sub-menu" hook="06"><a href="#about06">TEST</a></li>
<li id="sub-menu-07" class="sub-menu" hook="07"><a href="#about07">TEST</a></li>
</div>
<div id="about01" class="about">CONTENT HERE
</div>
<div id="about02" class="about">CONTENT HERE
</div>
<div id="about03" class="about">CONTENT HERE
</div>
<div id="about04" class="about">CONTENT HERE
</div>
<div id="about05" class="about">CONTENT HERE
</div>
<div id="about06" class="about">CONTENT HERE
</div>
<div id="about07" class="about">CONTENT HERE
</div>
就像我說的,如果#about01
所示,然後用戶就#sub-menu-01
點擊再次,窗口向下滾動到這個div的頂部,就像url的哈希正常行爲一樣。是一種防止默認行爲的方法,而不是滾動到點擊上的這個div的頂部?
此外,我想弄清楚是否有一種方法來顯示www.website.com/about
的頁面加載#about01
而不是必須在www.website.com/about/#about01
等?
不幸的是,這似乎沒有工作,瀏覽器仍然滾動到相關的div如果點擊兩次? – user1374796 2013-04-11 13:50:01
@ user1374796我用你的代碼寫了一個小提琴,但是我不能重現de問題。你能否修改它,以便我可以給你更準確的答案? http://jsfiddle.net/dnsxf/1/ – davids 2013-04-11 13:57:14
謝謝你,我已經更新它:http://jsfiddle.net/dnsxf/2/我已經使子菜單真高,所以你可以看到,如果你點擊一個'.sub-menu'兩次瀏覽器滾動到div,這不是我想要的 – user1374796 2013-04-11 14:02:10