Href ="#"不要滚动

43 html javascript

我对JS很新 - 所以只是想知道你是否知道如何解决这个问题.

目前我的代码中有

<a href='#' class="closeLink">close</a>
Run Code Online (Sandbox Code Playgroud)

哪个运行一些JS来关闭一个盒子.我遇到的问题是当用户点击链接时 - 当发生这种情况时,href ="#"会将用户带到页面顶部.

如何解决这个问题呢?即我不能使用某些像onclick ="return false",因为我想这将阻止JS工作?

谢谢

tva*_*son 57

通常的做法是从你的javascript点击处理程序返回false.这样既可以防止事件冒泡,也可以取消事件的正常操作.根据我的经验,这通常是您想要的行为.

jQuery示例:

$('.closeLink').click( function() {
      ...do the close action...
      return false;
});
Run Code Online (Sandbox Code Playgroud)

如果您想简单地阻止正常操作,则只需使用preventDefault.

$('.closeLink').click( function(e) {
     e.preventDefault();
     ... do the close action...
});
Run Code Online (Sandbox Code Playgroud)

  • +1 - 注意如果您不使用jQuery,请确保检查window.event是否存在,如果存在,请在返回false之前设置window.event.returnValue = false - 除非您这样做,否则IE并不总是停止冒泡. (3认同)

ROF*_*IME 31

解决此问题的最简单方法是在磅符号之后添加另一个字符,如下所示:

<a href='#a' class="closeLink">close</a>
Run Code Online (Sandbox Code Playgroud)

问题解决了.是的,就这么简单.有些人可能会讨厌这个答案,但他们不能否认它是有效的.

只是确保你没有实际分配给"a"的部分,否则它将转到页面的那一部分.(尽管如此,我不会经常看到这一点)默认情况下,"#"会自动显示在页面顶部.

  • 感觉像黑客,但真的很容易解决. (2认同)

小智 5

JavaScript版本:

myButton.onclick=function(e){
    e.preventDefault();
    // code
    return false;
}
Run Code Online (Sandbox Code Playgroud)

jQuery版本:

$('.myButtonClass').click(function(e){
    e.preventDefault();
    // code
    return false;
});
Run Code Online (Sandbox Code Playgroud)

这只是做得好!:)


Vog*_*ltz 5

您可以使用的一种选择是不使用href = "#",而是href = "javascript:;"允许您在不滚动的情况下运行 onclick 处理程序。

例如

<a href="javascript:;" onclick="doSomething()">Do Something</a>
Run Code Online (Sandbox Code Playgroud)