Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Href="#&引用;Don';卷轴_Javascript_Html - Fatal编程技术网

Javascript Href="#&引用;Don';卷轴

Javascript Href="#&引用;Don';卷轴,javascript,html,Javascript,Html,我对JS很陌生,所以我想知道你是否知道如何解决这个问题 我的代码中有当前的 <a href='#' class="closeLink">close</a> 它运行一些JS来关闭一个盒子。我遇到的问题是,当用户单击链接时,href=“#”会将用户带到页面顶部 如何解决这个问题,使它不会这样做?i、 e.我不能使用onclick=“return false”之类的东西,因为我认为这会阻止JS工作 谢谢通常的方法是从javascript点击处理程序返回false。这既可以

我对JS很陌生,所以我想知道你是否知道如何解决这个问题

我的代码中有当前的

<a href='#' class="closeLink">close</a>

它运行一些JS来关闭一个盒子。我遇到的问题是,当用户单击链接时,href=“#”会将用户带到页面顶部

如何解决这个问题,使它不会这样做?i、 e.我不能使用onclick=“return false”之类的东西,因为我认为这会阻止JS工作


谢谢

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

jQuery示例:

$('.closeLink').click( function() {
      ...do the close action...
      return false;
});
如果你想简单地阻止正常的行为,你可以使用


如果代码通过eventObject,则可以使用
preventDefault()
;返回false也有帮助

mylink.onclick = function(e){
 e.preventDefault();
 // stuff
 return false;
}

返回false是答案,但我通常会这样做:

$('.closeLink').click( function(event) {
      event.preventDefault();
      ...do the close action...
});

在运行代码之前停止操作。

尽管href='#'似乎非常流行,但它不是JavaScript的神奇关键字,它只是指向空锚的常规链接,因此毫无意义。您基本上有两种选择:

  • 为不知道JavaScript的用户代理实现一个替代方案,使用href参数指向它并取消与JavaScript的链接。例如:

  • 当noscript替代方案不可用或不相关时,您根本不需要链接:

    关闭


  • 围绕链接包装一个div语句,让链接返回false,在单击时向div添加javascript功能

    <div onClick="javascript:close();">
        <a href="#" onclick="javascript:return false;">Close</a>
    </div>
    
    
    
    JavaScript版本:

    myButton.onclick=function(e){
        e.preventDefault();
        // code
        return false;
    }
    
    $('.myButtonClass').click(function(e){
        e.preventDefault();
        // code
        return false;
    });
    
    jQuery版本:

    myButton.onclick=function(e){
        e.preventDefault();
        // code
        return false;
    }
    
    $('.myButtonClass').click(function(e){
        e.preventDefault();
        // code
        return false;
    });
    

    这只是把工作做好而已!:)

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

    <a href='#a' class="closeLink">close</a>
    
    
    
    问题解决了。是的,就这么简单。有些人可能讨厌这个答案,但他们不能否认它是有效的


    只需确保您没有实际将某个部分分配给“a”,否则它将转到页面的该部分。(我不像以前那样经常看到这一点,但默认情况下,“#”会自动进入页面顶部。

    很抱歉回答得太晚,但没有人提到这一点。
    只需将其设置为
    您可以使用的一个选项是不要使用
    href=“#”
    ,而是
    href=“javascript:;”
    这将允许您在不滚动的情况下运行onclick处理程序

    比如说

    <a href="javascript:;" onclick="doSomething()">Do Something</a>
    

    使用
    href=“JavaScript:Void(0);”
    像ROFLwTIME示例一样,一种简单的方法是在href中放置两个。这不常见,但对我有用

      <a href='##' >close</a>
    
    
    
    +1-注意,如果您没有使用jQuery,请确保检查window.event是否存在,如果存在,请在返回false之前将window.event.returnValue=false-除非您这样做,否则IE不会始终停止冒泡。-1。当这起作用时,函数开头的
    event.preventDefault
    是正确的方法。@David-我已经更新以记录您的评论。我的经验是,在几乎所有情况下,想要的行为都是取消正常操作并防止冒泡。YMMV.-1缩回。:-)但是,如果在返回false之前存在未捕获的异常,则将遵循链接(或者在OP情况下为#)。+1表示'#“只是一个没有特殊意义的空锚。。。谢谢。
    return false
    有效,但它不是所有情况下的答案
    return false
    调用
    event.preventDefault
    event.stopPropagation
    StopperPagation
    将阻止任何附加到该对象的其他事件触发。你可能想要也可能不想要。感觉像黑客,但确实是一个简单的修复。这太棒了!这个解决方案给我的生活带来了一些优雅的简单性。谢谢你,绝妙的解决方案!我喜欢。简单明了。在你的答案中再加一点描述