2012-04-23 70 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(); 
});