javascript - 防止标签点击页面跳转JS

标签 javascript jquery css

我有几个高度不同的标签。如何防止点击标签链接时页面跳转到容器顶部?

JSFiddle

http://jsfiddle.net/q1tdsar1/1/ 重现问题的步骤:单击选项卡 3,向下滚动,就像阅读选项卡 3 的内容一样,然后单击选项卡 1。Boom > Page Jump!

这是我的 JS:

$('#tabs div.tab').hide();
$('#tabs div.tab:first').show();
$('#tabs ul li:first').addClass('active');

$('#tabs ul li a').click(function(){
    $('#tabs ul li').removeClass('active');
    $(this).parent().addClass('active');
    var currentTab = $(this).attr('href');
    $('#tabs div.tab').hide();
    $(currentTab).show();
    return false;
});

这是 HTML

<div id="tabs">
    <ul class="nav">
      <li><a href="#tab-1">Tab 1</a></li>
      <li><a href="#tab-2">Tab 2</a></li>
      <li><a href="#tab-3">Tab 3</a></li>
    </ul>
    <div id="tab-1" class="tab">Some content</div>
    <div id="tab-2" class="tab">Some longer content</div>
    <div id="tab-3" class="tab">Some even longer content</div>
</div>

这是 CSS:

#tabs ul.nav {
    float: left;
    width: 500px;
}
#tabs li {
    margin-left: 8px;
    list-style: none;
}
* html #tabs li {
    display: inline;
}
#tabs li,
#tabs li a {
    float: left;
}
#tabs ul li.active {
    border-top:2px #FFFF66 solid;
    background: #FFFFCC;
}
#tabs ul li.active a {
    color: #333333;
}
#tabs div.tab {
    background: #FFFFCC;
    clear: both;
    padding: 15px;
}
#tabs ul li a {
    text-decoration: none;
    padding: 8px;
    color: #000;
    font-weight: bold;
}

最佳答案

到目前为止,您可能需要为所有选项卡使用相同的高度。所以脚本可能会有所帮助,因为这不是发生的页面跳转,因为您已经用 return false 代替了 event.preventDefault();

TabDivHeight = 0;
$('#tabs div.tab').each(function () {
  $(this).show();
  if ($(this).height() > TabDivHeight)
    TabDivHeight = $(this).height();
  $(this).hide();
});
$('#tabs div.tab').height(TabDivHeight);

fiddle :http://jsfiddle.net/342fsu8o/

或者如果你更喜欢 CSS 版本,我会说,去做这个:

#tabs div.tab {
  background: #FFFFCC;
  clear: both;
  padding: 15px;
  max-height: 200px;
  overflow: auto;
}

fiddle :http://jsfiddle.net/jv3bmtof/

或者如果您更喜欢平滑过渡,您可以使用 slideUp()slideDown():

$('#tabs ul li a').click(function () {
    $('#tabs ul li').removeClass('active');
    $(this).parent().addClass('active');
    var currentTab = $(this).attr('href');
    $('#tabs div.tab').slideUp();
    $(currentTab).slideDown();
    return false;
});

fiddle :http://jsfiddle.net/tdxyLvLs/

关于javascript - 防止标签点击页面跳转JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144149/

相关文章:

javascript - 对象[对象对象]没有方法 'select2'

javascript - 添加到数组中

jquery - 有没有类似于 jqGrid Treegrid 但支持卡住列的类似树网格

css - 定义 css 箭头的度数

javascript - 导航低于元素 - z-index 不工作

javascript - 如何用javascript中的函数参数替换1's in "document.search1.s​​earch_text1.value;”?

javascript - HTML Javascript 幻灯片优化

javascript - 停止 IE10 提交表单

javascript - 使弹出窗口在单击鼠标的位置打开

javascript - 当鼠标移到立方体上时如何让立方体变成黑色