Html 为什么在空锚定标记HREF中使用#约定?

Html 为什么在空锚定标记HREF中使用#约定?,html,Html,我知道最好不要留下空的锚标签。在jQuery和其他语法中,我注意到每个人都通常使用#来填补空白()。这个角色比其他角色更好还是更差?(例如,)。我没有理由想这样做,但除了惯例之外,似乎也没有理由以另一种方式去做。为什么在空锚定标记HREF中使用#约定 这是因为URL中的#字符引用本地页面 它用于页面中的命名锚(或任何ID),因此链接可以直接跳转到该区域 将其称为片段标识符,并表示: 片段标识符(如果存在)指定整个资源或文档中的一个部分或位置。当与HTTP一起使用时,它通常指定页面中的一个部分或位

我知道最好不要留下空的锚标签。在jQuery和其他语法中,我注意到每个人都通常使用#来填补空白(
)。这个角色比其他角色更好还是更差?(例如,
)。我没有理由想这样做,但除了惯例之外,似乎也没有理由以另一种方式去做。为什么在空锚定标记HREF中使用
#
约定

这是因为URL中的
#
字符引用本地页面

它用于页面中的命名锚(或任何ID),因此链接可以直接跳转到该区域

将其称为
片段标识符
,并表示:

片段标识符(如果存在)指定整个资源或文档中的一个部分或位置。当与HTTP一起使用时,它通常指定页面中的一个部分或位置,浏览器可以滚动显示页面的该部分


作为一个实际的例子,这个到维基百科的链接有一个片段标识符(总是在URL的末尾):


在页面中,如果用户禁用了javascript,则会有一个
这样的链接http://mysite.com/#“不会有任何负面后果

例如,这些链接仍然有效,因为
#
在当前页面上指定了一个位置:

虽然这些没有:


这是一种防止点击操作触发页面重新加载的老派方法


如果您不使用href属性,请将其保留为空,或者如果您可以为禁用JS的人设置一些备用URL,则效果更好(p>由
表示的链接)

因此,基本上,
指示浏览器保持在同一页面上。它通常与JavaScript一起使用-挂接onClick事件-以便JavaScript执行一些有用的操作,然后
返回false
,以防止浏览器实际跟踪链接。但是如果他愿意(例如,如果JavaScript被禁用,或者
return false
被禁用),那么它将不会离开当前站点,通常甚至不会重新加载它


因此,
#
不是用作随机字符,而是因为它实际上是为了表示链接中的锚定而指定的字符-碰巧在您的情况下,您既不需要实际链接(到另一个页面)也不需要锚定,只需要一个可单击的元素。

如果将其留空,则需要添加类似
a的内容{cursor:pointer;}
指向您的CSS,使其以相同的方式运行。此外,
href
是必需的HTML属性iirc。如果该属性存在但只是空的(如我在回复中所说)它可以很好地验证并显示光标。请注意,如果您使用像
#!
或类似的锚点,那么如果禁用JavaScript(或者如果事件侦听器中出现错误且无法返回
false
或调用
preventDefault
),则不会产生滚动到页面顶部的不良副作用.我从来都不知道
。你能解释一下为什么这有助于不滚动到顶部吗?
http://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax