HTML锚链接 - href和onclick两者?

psy*_*tik 82 html javascript anchor jquery

我想创建一个执行一些JavaScript的锚标记,然后继续去任何地方href.调用执行我的JavaScript,然后设置一个功能window.locationtop.locationhref位置没有为我工作.

所以,想象一下我在页面上有一个id为"Foo"的元素.我想创作一个类似于的锚:

<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>
Run Code Online (Sandbox Code Playgroud)

单击此按钮时,我想执行runMyFunction,然后将页面跳转到#Foo(不会导致重新加载 - 使用top.location会导致重新加载页面).

建议?我很高兴使用jQuery,如果它可以在这里帮助...

Amb*_*ber 122

恰恰相反return true

onClick代码的返回值决定了链接的固有点击操作是否被处理 - 返回false意味着它没有被处理,但如果你返回,true那么浏览器将在你的函数返回后继续处理它并转到正确的锚.

  • @Ruben你能解释一下为什么你不应该在点击事件处理程序上使用 event.preventDefault() 吗? (5认同)
  • @Amber 似乎如果 onclick 不返回任何内容,则将处理链接的固有点击操作。 (3认同)
  • @maciek 那么返回值被视为“未定义”,对于这些目的来说,它被认为是 false。 (2认同)

n13*_*313 28

<a href="#Foo" onclick="return runMyFunction();">Do it!</a>
Run Code Online (Sandbox Code Playgroud)

function runMyFunction() {
  //code
  return true;
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您将执行youf功能,并且您将按照链接进行操作,并且您将在功能成功运行后完全按照链接进行操作.


pei*_*rix 7

如果链接只应在函数运行成功时更改位置,那么在函数中执行onclick="return runMyFunction();"以及返回true或false.

如果您只想运行该函数,然后让锚标记完成其工作,只需删除该return false语句即可.

作为旁注,您应该使用事件处理程序,因为内联JS不是一种非常理想的处理方式.