单击href =“#”时为什么页面向上滚动?

时间:2010-11-13 16:34:00

标签: javascript html ajax

我有一个超级链接<a href="#" id="someID">Link</a>,我必须向下滚动页面才能到达。此超链接仅用于触发Ajax请求。当我点击这个超链接时,页面一直滚动到顶部!我怎样才能解决这个问题?我使用#因为其他任何东西都会重新加载页面。我使用它错了吗?

编辑:

我很难解释正在做什么,如果你这样做,你会得到我面临的同样问题。即使在返回虚假之后。

   <html>
    <head>
    </head>
    <body>
        <a href="#" id="link" style="position:absolute; top:200%;">Link</a>
    </body>
</html>
<script type="text/javascript">
    document.getElementById("link").onmousedown = function(){
        this.style.color="red";
        return false;
    }
</script>

5 个答案:

答案 0 :(得分:7)

return false;添加到指定的事件处理程序:

 el.onclick = function() {
   // do your code
   return false;
 }

或者可以说更优雅的方式

function(e) {
   e = e || window.event;
   if ( e.preventDefault ) e.preventDefault()
   else e.returnValue = false;
}

答案 1 :(得分:6)

必须尝试javascript:void(0)代替#

来源:

Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

修改

原因:

它可以阻止浏览器刷新或导航到其他页面。

http://www.tizag.com/javascriptT/javascriptvoid.php

答案 2 :(得分:4)

浏览器正在尝试移动到名为#的锚点。没有任何东西它滚动到最顶端。为了避免这种行为,请按照提及的方式进行。

答案 3 :(得分:1)

单击锚标记时需要停止事件传播。

答案 4 :(得分:0)

浏览器正在读取#作为锚点,你以太网有一个id为&#34; someID&#34;在您的页面顶部或根本没有ID,在这种情况下,默认情况下它将只是到页面的顶部(这似乎是你的情况)。您必须将#符号替换为停止此操作。我不确定什么是最好的,但Evan Mulawski的回答可能有效。我不知道这是否仍然允许你的ajax代码正常运行。