如何取消您的href="javascript:void(null)"?

4

最近我在给图片添加href时遇到了javascript:void(null);的问题。

在我的Safari版本(Leopard PPC中的4.0.3)中,当我在图片周围应用javascript:void(null);的href时,图片完全从布局中消失。我看到这也会发生在IE中,但我无法确认。

我读过使用井号(#)与onclick处理程序

onclick="return false;"

这个方法是可行的,但我不喜欢在URL后面添加英镑符号。

我知道有各种技术,那么你是如何处理超链接的呢?


1
如果您在锚点中使用了 onclick="return false",则实际上不会将 # 添加到 URL 中。您可以放心睡觉了。 - Roatin Marth
5个回答

6

像这样

<a href="#" onclick="doSomething(); return false;">

或者更好的选择
<a href="nonJavascriptAlternative.html" id="foo">

然后使用JavaScript在jQuery中附加一个处理程序。
$('foo').click(function() { doSomething(); return false; });

5

我更喜欢的选择是

<a href="non_javascript_alternative.html" onclick="doSomething(); return false;">

尽可能地,在属性中拥有事件处理程序(这并非总是可行)。与在文档加载后附加事件相比,具有以下优点:

  1. 简单性
  2. 清晰度
  3. 兼容性
  4. JavaScript事件处理程序甚至可以在文档加载之前就能正常运行。

这怎么是这里最糟糕的答案? - Tim Down
这不是 - 我正要标记它为已回答。我认为这是最好的答案,因为它具有灵活性和清晰度。我只是还没来得及处理它 :) - Richard Testani
抱歉发脾气了 :) - Tim Down

3

不要使用#,因为你提到的原因,而且在一些浏览器上,如果用户滚动到页面底部,点击链接会使他们跳回到页面顶部。我使用以下代码:

<a href="javascript:"><img src=""/></a>

在任何浏览器上,这都不应该成为问题(至少我还没有遇到过问题)。


2
它将在IE上触发事件“onbeforeunload”,我更喜欢使用“#1”,它不会滚动到顶部,也永远不会匹配DOM中的任何ID或名称。 - Fabien Ménager
不知道这个。IE 又出问题了。 - Karim

2
如果您在onclick事件中返回false,则点击操作将被取消,因此#不会添加到URL中。
<a href="#" onclick="return false;">

1

我在我的href中放置了有效的URL。为什么你要创建没有任何作用的链接?

 <span onclick="doSomething();" class="fakeLink"><!-- active elements --></span>

主要用于事件处理,您希望强制链接不执行任何操作。 - Richard Testani
当然可以。但这样不算真正的链接,对吧?使用<a>标签会带来诸如指向链接的位置,在js未启用时出现的问题等让人头疼的问题。而使用<span>或<div>标签则避免了这些问题,代价是需要添加一些CSS来样式化fakeLink类以使其看起来像你的链接。但如果你已经在样式化链接了,那么这并不需要太多额外的工作。 - Scott Saunders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接