在Hash标签上防止窗口位置移动(使用Jquery选项卡)

时间:2012-05-15 10:56:42

标签: jquery html tabs anchor

好的,我知道很多以前提出的问题,讨论这个话题但是我很茫然而且无法弄明白。

我的问题是当我点击每个标签链接时,整个浏览器窗口会移动到标签内容div的锚点,就像您期望的那样,例如scrollTop链接。有谁知道快速修复?

我正在使用这样的基本标签结构:

<div id="tabContaier">
  <ul>
    <li><a href="#tab1">Tab 1</a></li>
  </ul>
</div>

<div class="tabDetails">

  <div id="tab1">
    <h1>My Tab Title</h1>
    <p>Whatever goes here</p>
  </div>

</div>

我的Jquery如下:

$(".tabContents").hide();
$(".tabContents:first").show();

$("#tabContaier ul li a").click(function(){

  var activeTab = $(this).attr("href");
  $("#tabContaier ul li a").removeClass("active");
  $(this).addClass("active");
  $(".tabContents").hide();
  $(activeTab).fadeIn();
});

一如既往,任何帮助都非常感激: - )

3 个答案:

答案 0 :(得分:2)

我相信你的意思是当你点击一个带有哈希作为其href属性的锚点时跳转到页面顶部?

如果要停止此操作,则必须阻止单击处理程序上的默认操作。这是一个例子:

$("#example").click(function(e) {

    e.preventDefault(); 

  //Add your code here
});

答案 1 :(得分:1)

问题是您的浏览器正在关注标签的href ...您需要通过执行以下操作来阻止此操作:

$("#tabContaier ul li a").click(function(event){
   // your code
   event.preventDefault();
});

Docs for event.preventDefault() here

答案 2 :(得分:-1)

尝试这个,如果它不起作用,请告诉我

<div id="tabContaier">
  <ul>
    <li><a href="#tab1" onclick="return false;">Tab 1</a></li>
  </ul>
</div>