为什么href =“#”的优先级高于onclick

时间:2010-11-09 08:45:14

标签: javascript onclick href

我通常会找到以下代码:

<a href="#" onclick="func();return false">click</a>

但有时我的浏览器会转到页面顶部?

为什么href="#"的优先级高于onclick?

3 个答案:

答案 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。