众所周知,拥有这样的代码非常普遍:
<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或者应该如何附加事件处理程序
答案 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而导致的奇怪的基于浏览器的错误时出现的问题。