有没有什么特别好的理由继续在javascript目标链接上使用href ='#'?

时间:2012-02-02 03:46:21

标签: html css

众所周知,拥有这样的代码非常普遍:

<a href='#' class='edit'>Edit</a>

然后将其连接到事件处理程序(现在使用jQuery或其他任何内容)

或甚至使用内联js处理程序

<a href='#' onclick='editThis()'>Edit</a>

我知道这是一种在链接上显示指针/手形光标的懒惰方式,但只需使用此css即可轻松纠正:

  a {
       cursor:pointer;
  }

(在样式表中编写一次所需的时间少于在每个链接上编写href ='#')

如果出于某种原因,处理程序没有机会将自己附加到元素上,那么href='#'还会导致浏览器跳转到页面顶部的烦人不便(鼠标触发快乐用户,不耐烦的类型,...)

我的问题是,还有一个特别好的理由继续使用href='#'吗?

在某些特定情况下删除它会破坏某些浏览器行为吗?

编辑:我正在为这个问题找到一些非常随机的答案,也许我应该澄清一下。

问题是:如果我通过css设置手形光标(以及下划线和颜色 - 感谢Borealid),我是否可以完全摆脱href属性

这个问题关于什么是最好的href或者应该如何附加事件处理程序

5 个答案:

答案 0 :(得分:2)

最理想的是,如果用户禁用了Javascript或想要在新标签中打开编辑屏幕,您将链接到可以使用的页面:

<a href="/edit-profile/" class="edit-profile-link">Edit Profile</a>

这样,如果出现任何问题,就不会丢失任何功能。

当然,构建AJAX编辑屏幕和标准编辑屏幕更有效。如果您不想完成所有这些并且您不关心Javascript免费用户,您可以使用此:

<a href="javascript:;" class="edit-profile-link">Edit Profile</a>

答案 1 :(得分:2)

一般来说,我没有为js调用使用标签,它的草率并给出你正在谈论的响应。如果我正在做一个锚完全使用它,但如果你不只是使用一个类作为你的选择器,并在css中完成剩下的工作。

答案 2 :(得分:0)

使用CSS更好。不,删除#不会破坏浏览器行为。但是,你得到的CSS还不够:还需要更改文本颜色和下划线样式,并实现悬停处理,并可选择区分后续链接。

答案 3 :(得分:0)

在这种情况下设置href =“#”基本上是希望从它的默认行为中停止事件。我实际上已经回答了类似的问题here

答案 4 :(得分:0)

从纯粹主义的角度来看,我认为你通过不包括href属性打破了网络。如果浏览器不支持javascript,则您的链接不适用于他们。这是纯粹主义者的观点 - 简单地将href指向“#”并不会产生任何影响。

过去你只使用没有href的锚来指定页面上的占位符,但看起来好像在HTML5中使用没有href的锚标记被认为是过时的:

http://www.html-5.com/changes/deprecated/a-name-tag.html

所以纯粹的观点是你打破了网络。

现实主义的观点是,如果你必须重新整合浏览器因为你的HTML而在CSS中免费提供的一些行为 - 这意味着浏览器对HTML中的某些东西不满意。并且鉴于没有href的锚被弃用。常识告诉我继续使用href =“#”以避免在处理由于这种轻微违反DOM而导致的奇怪的基于浏览器的错误时出现的问题。