在不包括 href
属性的情况下,使用锚点标签并通过 JavaScript 的 click 事件处理程序来使用它是否可行?这意味着我会完全省略 href
,甚至不使用空值的方式 (href=""
)。
href
属性的a
元素是有效的。它被认为是一个“占位符超链接”。<a>previous</a>
在w3c锚点标签参考页面上查找“placeholder hyperlink”:https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element。它也在这里的维基上提到了:https://www.w3.org/wiki/Elements/a。占位符链接用于您想要使用锚元素但不想导航到任何地方的情况。这对于在导航菜单或面包屑中标记当前页面非常有用。占位符链接还可用于动态设置链接目标的情况。您只需设置href属性的值,即可使锚标记可点击。另请参见:href
属性,cursor: pointer
样式将不会自动添加到该元素。 - Luke我的建议是使用<a href="#"></a>
如果你在使用JQuery,请记得同时使用:
.click(function(event){
event.preventDefault();
// Click code here...
});
如果您必须为向后兼容使用href,则还可以使用
<a href="javascript:void(0)">link</a>
如果您不想使用属性,可以使用#的替代方法
href
是必需的(除非它是一个命名锚点,在这种情况下,tabindex 没有意义)。在 HTML 5 中使用 tabindex
将无法聚焦的元素添加到 Tab 顺序中是一项新创新。 - Quentintabindex
不是 HTML5 的功能。在 HTML4 中,使用没有 href
属性的 a
元素是有效的。在该元素上使用 tabindex
属性而没有 href
属性也是有效的 HTML4。你的“长答案”和“上下文”一样错误。我不明白你不理解什么。如果有人来到这个页面并看到你的答案,他们会带着错误的理解离开,更重要的是,得到一个完全错误的答案。无论如何,评论不是用来进行长时间讨论的,所以对于我的回复,我表示歉意。我不会再回复了。 - michael即使没有href属性,使用标签也是可以的。与这里许多答案所表示的相反,实际上有标准原因创建一个没有href的锚点。从语义上来说,"a"代表一个锚点或链接。如果你将其用于符合此含义的任何内容,则没问题。
不带href的标签的一个标准用法是创建命名链接。这允许您使用name = blah的锚点,稍后可以创建一个指向href=#blah的锚点以链接到当前页面的命名部分。但是,这已被弃用,因为您还可以以同样的方式使用ID。例如,您可以使用id = header的标题标签,然后稍后可以有一个指向href =#header的锚点。
然而,我的观点不是建议使用name属性。仅提供一种无需href的用例,并因此说明它不是必需的原因。
<a>
元素无法通过 Tab 键进行导航,所有链接都应该可以通过 Tab 键进行导航,所以如果没有 href,请添加 tabindex="0"
。在使用多级菜单并且需要展开下一级但不想让菜单标签成为活动链接时,没有“href”的<a>
标签非常方便。我从来没有在这种方式下遇到过任何问题。
在某些浏览器中,如果没有提供href属性,您可能会遇到问题。我建议您编写类似以下代码:
<a href="#" onclick="yourcode();return false;">Link</a>
你可以用自己的函数或逻辑替换yourcode(),但一定要记得在末尾添加return false;语句。
#
。 对于我的一些导航栏链接,我不想触发到#
的路由,这就是如果你单独使用a href="#"
会发生的事情。 使用<a href="#" onclick="return false;"
可以阻止路由被触发,但点击事件仍会冒泡到我的处理程序中(使用通过jQuery和Backbone.Radio挂钩的DOM事件)。谢谢@shashwat13 :) - David Williamson
<span>
元素可以通过键盘进行导航。您还可以使<a>
元素不能通过键盘导航。 - zzzzBov