我想要创建一个链接,并使用JavaScript强制链接锚点,我尝试了以下方法:
<a id="ServerSort" href="#" style="text-decoration:underline">
它运行良好,但在单击链接后,页面将失去当前位置。
我需要该链接具有href,因为我需要在悬停时更改鼠标光标。
有人可以给予建议吗?
我想要创建一个链接,并使用JavaScript强制链接锚点,我尝试了以下方法:
<a id="ServerSort" href="#" style="text-decoration:underline">
它运行良好,但在单击链接后,页面将失去当前位置。
我需要该链接具有href,因为我需要在悬停时更改鼠标光标。
有人可以给予建议吗?
javascript:void(0)
。<a id="ServerSort" href="javascript:void(0)">
根据King King的评论,您不需要style="text-decoration:underline"
停止事件的默认动作。
$('#ServerSort').click(function(event){
event.preventDefault(); //or return false;
});
javascript:void(0)
是无效的 -- http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#attr-hyperlink-href - James Sumnersjavascript:
前缀不会创建任何有效的链接,它只是看起来像链接,允许你在点击时运行一些脚本,在这种情况下,点击将不会产生任何作用。几乎所有主流浏览器都实现了在锚点上使用 javascript:
前缀的功能,我相信它将继续受到支持。 - King Kingjavascript:
前缀是正确的选择,尽管这可能不是最好的选择,因为我们可以使用另一个元素来模拟链接,而且使用 javascript:
前缀需要内联脚本,这是不推荐的。 - King King最好的方法是将href设置为#0
,像这样:
<a href="#0">blabla</a>
为什么要这样做呢?因为您永远不会在ID为0的页面上拥有任何内容(如果您确实有,则存在问题),并且由于#0
不存在,点击事件不会让您回到页面顶部。您无需使用JavaScript来实现此功能,也不应该使用JavaScript。
.clickable {
cursor: pointer;
}
<a id="ServerSort" class="clickable">Foo</a>
href
也会默认为您提供键盘焦点能力。 - SimplGy该方法告诉用户代理,如果事件没有被明确处理,则不应像通常情况下那样执行其默认操作。
function clickme(ev) {
alert('You stay here!')
ev.preventDefault()
}
<a onclick='clickme(event)' href='https://www.google.com/'>https://www.google.com</a>
事件会像往常一样继续传播,除非它的事件监听器调用
stopPropagation()
或stopImmediatePropagation()
中的任何一个,这两个方法都会立即终止传播。
另外,您可以使用onclick='return false'
(内联或在函数中)。 它将阻止默认浏览器行为(更多信息):
function clickme() {
alert('You stay here!');
return false;
}
<a href="https://www.google.com/" onclick='return clickme()'>https://www.google.com/</a>
<a id="ServerSort" href="javascript:">
<a id="ServerSort" href="javascript://">
<a id="ServerSort" href="javascript:void(0)">
以下内容被认为是不良做法,我永远不会推荐在生产环境中使用这样的方法。我通常在开发阶段链接到不存在页面时使用第一种选项。
最好不使用 a 标签,而是在下面的示例中切换到 span 标签:
<span id="ServerSort" onclick="return false">Test Link</span>
只需相应地为元素设置样式:
<style type="text/css">
#ServerSort {
text-decoration:underline;
}
#ServerSort:hover {
color:red;
cursor:pointer;
}
</style>
我正在内联js,只是手写一个a标签来展示一种不同的方法,避免了覆盖默认行为的需要。
javascript:void(0)
很好地发挥作用。 - Andrew Barberhref
,然后只需使用a:hover { cursor: pointer; }
来实现鼠标悬停时的指针效果。 - Brian Glazcursor: pointer;
而不是javascript:void(0)
,还因为如果禁用了JavaScript,这个链接会失效。 - André Dionhref
的原因可能是想要禁用链接,如果是这样,您可以使用 CSS 中的style="pointer-events:none;"
。或者,参见 https://dev59.com/G3I95IYBdhLWcg3w7CnL#32930539。 - Avatar