Javascript HREF链接不以任何内容为目标,不希望使用哈希或void(0)

Javascript HREF链接不以任何内容为目标,不希望使用哈希或void(0),javascript,jquery,html,Javascript,Jquery,Html,我有一个链接,我希望能够点击它来触发一段jQuery代码 目前我有 <a href="#" id="foo">Link</a> 这很有效。但是,我一直讨厌这样使用哈希。页面闪烁,散列被添加到页面url 一种选择是使用 <a href="javascript:void(0);" id="foo">Link</a> 但我也不喜欢在浏览器状态栏中看到这段代码。看起来很俗气 我想要的是一个解释性的javascript占位符,它什么也不做,比如 &

我有一个链接,我希望能够点击它来触发一段jQuery代码

目前我有

<a href="#" id="foo">Link</a>
这很有效。但是,我一直讨厌这样使用哈希。页面闪烁,散列被添加到页面url

一种选择是使用

<a href="javascript:void(0);" id="foo">Link</a>

但我也不喜欢在浏览器状态栏中看到这段代码。看起来很俗气


我想要的是一个解释性的javascript占位符,它什么也不做,比如

<a href="javascript:zoom();" id="foo">Link</a>

它实际上可以工作,但是在javascript控制台中抛出一个ReferenceError,因为没有这样的函数不做任何事情的函数的最小定义是什么?

还有其他选择吗?

我是否应该跳过链接并使用类似的内容

<span id="foo" style="cursor:pointer;cursor:hand;">Link</span>
链接
相反?

使用该方法

这将防止在单击时哈希产生任何影响。或者去掉散列,并使用CSS对其进行样式化

此外,您还可以为
href
提供一个实际的url来处理降级


不做任何事情的函数的最小定义是什么?

这里有一个无操作功能:

var noop = function(){};
…或者因为您使用的是jQuery,所以可以使用该方法,它也只是一个空函数

$.noop
例如,您可以使用:

$('#foo').click(function(e){
    // Do stuff
    e.preventDefault();
});

理想情况下,该链接应该链接到一个页面,该页面为未启用JS的用户复制JavaScript功能。然后,
preventDefault
将阻止实际导航,如其他答案所示


如果在本例中没有意义,请注意
href
属性是可选的。你可以完全不使用它。

这是一种不恰当的链接用法,你应该使用一个按钮或其他元素,表明单击会使事情发生,但不会导航。

+1:注意,有了这个答案,你可以保持哈希标签,页面不会闪烁。javascript:void(0)已被删除。出于可访问性的原因,我不建议使用类似于锚的跨度。您可能希望将
与@patrick dw的答案结合使用。@thirtydot就是这样!现场。盲人用户的屏幕阅读器不会知道视觉样式的跨度应该是一个链接。@Eevee-屏幕阅读器也会与非链接的链接混淆。适当的UI组件是一个按钮,那么有眼光的和没有眼光的访问者在点击它之前都会知道它不是一个链接。这是行不通的。preventDefault()是事件的一个方法,而不是被单击的jQuery包装元素。@Rob Cowie:诚实的错误-更正,虽然有点晚,但打赌比不上。假设这是一个简单的错误。:)如果省略href属性,元素就不再是链接。如果它转到虚拟位置,它就不是真正的链接。关于使用按钮,您可能是对的。同意,但在本例中,链接附加到图形,很明显,由于文本的命名和放置,链接将在图形对象上执行缩放操作。而且,在这个实现中,按钮会太大。总的来说,你是完全正确的。
$.noop
$('#foo').click(function(e){
    // Do stuff
    e.preventDefault();
});