如何创建一个空的HTML锚点,以便在单击它时页面不会“跳起来”?

时间:2009-01-29 20:08:03

标签: javascript jquery anchor

当我点击链接时,我正在研究一些JQuery来隐藏/显示一些内容。我可以创建类似的东西:

<a href="#" onclick="jquery_stuff" />

但如果我在页面上向下滚动时单击该链接,它将跳回到页面顶部。

如果我这样做:

<a href="" onclick="jquery_stuff" />

该页面将重新加载,这将覆盖javascript所做的所有更改的页面。

这样的事情:

<a onclick="jquery_stuff" />

会给我预期效果,但它不再显示为链接。有没有办法指定一个空锚,所以我可以为onclick事件分配一个javascript处理程序,而不更改页面上的任何内容或移动滚动条?

11 个答案:

答案 0 :(得分:79)

提出“返回假”;在第二个选项:

<a href="" onclick="jquery_stuff; return false;" />

答案 1 :(得分:24)

您需要在return false;之后jquery_stuff

<a href="no-javascript.html" onclick="jquery_stuff(); return false;" />

这将取消默认操作。

答案 2 :(得分:23)

你可以简单地如下所示:

<a href="javascript:;" onclick="jquery_stuff">

答案 3 :(得分:19)

jQuery内置了一个名为preventDefault的函数,可以在这里找到: http://api.jquery.com/event.preventDefault/

以下是他们的例子:

<script>
$("a").click(function(event) {
    event.preventDefault();
});
</script>

你也可以建立这样的链接:

<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>

答案 4 :(得分:6)

检查eyelidlessness'评论(使用按钮,而不是锚)。即将发布相同的建议。不链接到资源并仅执行脚本的锚应该实现为按钮。

  

停止将您的事件处理程序放在HTML中,并停止使用锚标记   不服务于锚语义目的。使用按钮添加   点击Javascript中的处理程序。示例:HTML <button id="jquery_stuff">Label</button>和JavaScript   $('#jquery_stuff').click(jquery_stuff);。您可以使用CSS来设置样式   按钮看起来像一个链接,通过删除填充,边框,边距和   背景颜色,然后添加您的链接样式(例如颜色和   文字修饰)。 - eyelidlessness 2010年10月19日17:40

答案 5 :(得分:4)

<a href="javascript:;" onclick="jquery">link</a>

href如果你不想在html的验证器中弹出错误,那里需要一些东西。 javascript:;是个好地方。

如果您真的想使用#

<a href="#me" name="me" onclick="jquery">link</a>

小心return false;,它会暂停你正在做的任何事情的默认行为。

此外,如果您的js像提交一样,您可能会在Internet Explorer中遇到问题。

答案 6 :(得分:0)

<a href="javascript:// some helpful comment " onclick="jquery_stuff" />

答案 7 :(得分:-1)

我通常使用<span>并将其设计为当我需要完成此类操作时的链接。

答案 8 :(得分:-1)

  <a href="#" class="falseLinks">Link1</a>
  <a href="#" class="falseLinks">Link2</a>

等。

JQUERY:

  $(function() {
    $("a.falseLinks").click(function() {
      // ...other stuff you want to do when links is clicked

      // This is the same as putting onclick="return false;" in HTML
     return false;
    })
  });

@eyelidlessness就像他说的那样有点愚蠢,但他是对的。这是最干净的方法。为什么要使用jQuery,如果你要回到vanilla Javascript,jQuery会更简单,更清洁吗?

答案 9 :(得分:-2)

答案 10 :(得分:-4)

这个怎么样:

<a href="#nogo" onclick="foo();">some text</a>