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

sam*_*yed 27 jquery scroll href toggle slide

可能重复:
当单击一个触发javascript的链接时,如何阻止网页滚动到顶部?

我正在使用jquery的slidetoggle来显示/隐藏div.控制滑动的元素是文本链接(<\ a>中的一些文本),它具有href ="#",因此它看起来像一个链接(下划线,光标更改).

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

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

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

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

rfu*_*duk 74

几个选项:

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

    function( e ) {
      e.preventDefault();
      // your event handling code
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • `return false;`不是处理这个问题的正确方法.通常情况下,开发人员在他们的事件处理程序结束时懒得抛出`return false;`而不了解此操作的后果.没有理由阻止事件的传播.您需要做的就是阻止用户代理的默认操作.因此,`preventDefault()`是在这里使用的正确函数. (5认同)
  • 谢谢大家的答案.我使用return false它完美地工作stackoverflow是惊人的! (3认同)

SLa*_*aks 5

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