href =“#”导致位置地址改变,我们可以避免吗?

时间:2013-08-06 12:51:19

标签: angularjs angularjs-routing

我有许多标签,我处理特殊逻辑,因此不会发生位置栏地址更改。我有以下

<a href="#">Home</a>

这符合预期,即当鼠标悬停在按钮上但点击然后开始路径更改时,它会给我手形鼠标指针。我希望能够阻止它。

我尝试删除href或设置href="",似乎取得了一些成功,但在悬停时却出现了意想不到的结果。

这里的最佳做法是什么?我必须删除href吗?那么我需要使用CSS设置选项卡的样式,以便在悬停时给我鼠标指针?如果我确实在链接中留下href="#",那么这会导致路由更改,这不是我想要的。

我实际上在每个标签的ngClick处理我的登录信息。这个逻辑不能改变路线。

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

尝试做:

<a href="javascript:void(0);">Home</a>

答案 1 :(得分:3)

如果您不使用<base>标记,则只需使用:

<a href="">Home</a>

确实,根据documentation

  

[...]当href属性为空时,将阻止默认操作。

嗯,文档错误,实际行为实际上是在href属性等于页面位置时阻止默认操作。当您使用<base>时,这是一个问题。在这种情况下,您有两种选择:

  • 忘记href属性。这样做很好,但您的网页将不再有效,因为href标记必须使用<a>属性。
  • 创建您自己的指令,例如aEmpty,其目标只是使用当前值href填充实际<a>的{​​{1}}属性。

在所有情况下,您最好使用CSS来设置链接的样式,因为依赖浏览器的默认行为总是一个坏主意。

答案 2 :(得分:1)

href替换为ng_click

要获取手形鼠标指针,请添加css样式:

a { cursor: pointer ; }
a:hover   { color: #00c }  /* user hovers     */
相关问题