什么是最好的crossbrowser方式使锚没有href(javascript驱动)表现得像真正的锚?最明显的一个是使用#作为锚点,但它会使页面跳转...
答案 0 :(得分:17)
无操作链接,甚至没有跳转:
<a href="javascript:void(0)">link</a>
更新:正如链接文档所暗示的那样(Ambrosia指出),由于void(0)
返回undefined
,因此最好将上面的代码写为:
<a href="javascript:undefined">link</a>
当然,除非已经重新定义了undefined。
答案 1 :(得分:6)
这些不会跳转:
<a href="#null">Click</a>
<a href="#n">Click</a>
<a href="#undefined">Click</a>
然而,他们是灵魂摧毁和极度丑陋。
答案 2 :(得分:6)
您应该从与锚点相关联的点击处理程序中返回false 。鉴于HTML:
<a id="example" href="/whatever"/>
JS应该看起来像:
document.getElementById('example').onclick = customAnchorReturn;
function customAnchorReturn() {
// do stuff
return false;
}
或使用jQuery:
$('a#example').click(function(){
// do stuff
return false;
});
通过这种方式,JS将是不显眼的,如果JS被禁用,锚点仍然可以工作。
答案 3 :(得分:4)
如果您对click事件做出反应,只需确保返回false,href中的任何内容,无论是#hash还是其他url,都将被忽略。
<a href="#anything" onclick="doSomething(); return false;">link</a>
答案 4 :(得分:1)
也许这也没关系:
<a href="javascript:;">link</a>