2012-04-23 67 views
6

我有以下的HTML標記,這僅僅是三個選項卡點擊它時,顯示在頁面上的一個div預加載文本,禁用滾動當一個鏈接點擊

<a class="page" id="tab1">This is tab!</a> 
    <a class="page" id="tab2">This is tab 2!</a> 
    <a class="page" id="tab3">This is tab3!</a> 

這個jQuery只是隱藏或顯示文本時被點擊的標籤之一,

$(document).ready(function() { 
    $(".page").hide(); 
    $("#tab1").show(); 
}); 
$(".page").click(function() { 
    var id = $(this).attr("href"); 
    $(".page").hide(); 
    $(id).show(); 
}); 

但是,如果頁面溢出(即頁面滾動),當我點擊其中一個選項卡,頁面自動滾動到中心在div視口。我如何防止這種情況發生?

+6

哪裏是'href'在''標籤? – thecodeparadox 2012-04-23 12:34:58

+0

沒有hrefs。我很懶。 :/ – GoofyBall 2012-04-25 10:16:53

回答

9

要防止點擊(以下錨散列)的頁面滾動使用:Event.preventDefault()

$(".page").click(function(evt) { 

    evt.preventDefault();  // prevents browser's default anchor behavior 

    // Other code here.... 
    $(".page").hide();   // HIDE ALL  .page 
    $("."+ this.id).show();  // SHOW RELATED .(id) 
}); 
2
<a href="#" class="page" id="tab1" onclick="return false;">This is tab!</a> 

return false添加到您的所有主播。

+0

謝謝你,查克諾里斯! – GoofyBall 2012-04-23 12:37:54

+2

這是**錯誤**的方式來做到這一點,檢查我的答案或羅科的回答 – pomeh 2012-04-23 12:38:58

+0

Wrongggg。如果你使用錨點,你必須使用href屬性,而不是onclick! – 2012-04-23 12:45:05

0

這對於哈希鏈接的默認行爲。你需要的是防止默認瀏覽器的行爲,所以你應該使用event.preventDefault方法

$(".page").click(function(event) { 
    var $el = $(this), id = $el.attr("href"); 
    $(".page").hide(); 
    $el.show(); 
    event.preventDefault(); 
});