当与jquery slidetoggle一起使用时,链接href =“#”将页面滚动到顶部

时间:2010-01-07 23:01:25

标签: jquery scroll toggle href slide

  

可能重复:
  How do I stop a web page from scrolling to the top when a link is clicked that triggers javascript?

我正在使用jquery的slidetoggle来显示/隐藏div。 控制滑动的元素是文本链接(< \ a>中的一些文本) 它有href =“#”所以它看起来像一个链接(下划线,光标变化)。

问题是当点击链接时,除了滑动效果外, 页面滚动到顶部。

我尝试用href =“”替换href =“#”,但是禁用了div显示/隐藏效果。 我想我可以添加到标签Name =“somename”然后将href设置为href =“#somename” 但我宁愿不使用这样的技巧。

为什么href =“#”将页面滚动到顶部?

任何想法都将受到高度赞赏

4 个答案:

答案 0 :(得分:74)

有几个选择:

  1. return false;放在点击处理程序的底部,并且不会跟踪href。
  2. 将href更改为javascript:void(0);
  3. 在处理程序中对事件调用preventDefault

    function( e ) {
      e.preventDefault();
      // your event handling code
    }
    

答案 1 :(得分:5)

您需要将return false;添加到您的点击处理程序中 这将阻止浏览器执行单击的默认操作。

答案 2 :(得分:1)

其他人已经为您提供了解决方案。但要专门回答您的问题,#指的是当前页面。由于标签的解释是将标签的 top 带入视图,因此单击#标签会将您滚动到当前页面的顶部。

答案 3 :(得分:1)

return falseevent.preventDefault()是您在点击事件处理程序中需要的,以防止发生默认操作。 <a> href #的{​​{1}}元素会导致浏览器视口跳转到页面顶部作为默认操作