我通常会找到以下代码:
<a href="#" onclick="func();return false">click</a>
但有时我的浏览器会转到页面顶部?
为什么href="#"
的优先级高于onclick?
答案 0 :(得分:4)
优先级不高。触发了onclick,然后浏览器跟随链接。
如果您没有return false
(注释拼写)或func
引发错误(因此未达到return
声明),则不会取消该活动。
(作为JS失败或被禁用的后退,但是,到页面顶部的链接真的很糟糕。Progressive enhancement是前进的方向。)
答案 1 :(得分:2)
如果您希望拥有href
值的唯一原因是启用手形光标,则可以改为使用css样式:
<a style="cursor:pointer;" onclick="func();return false">click</a>
答案 2 :(得分:0)
...以及十年后,这是上述问题的答案;
<a href="#" onclick="event.preventDefault(); func()">click</a>
为避免混淆,此答案未解决“返回假”方面。该主题可以单独研究。
PS;从技术上讲,单击锚标记时不会发生层次结构(也称为“优先级”)。但是由于HREF是“默认”操作, 从某个角度看,对于锚标记事件,HREF的优先级要高于OnClick。