104

我想创作一个执行一些 JavaScript 的锚标记,然后继续去任何地方href。调用一个执行我的 JavaScript 然后设置window.locationtop.location到该href位置的函数对我不起作用。

所以,想象一下我在页面上有一个 id 为“Foo”的元素。我想创作一个类似于以下内容的锚:

<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>

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

建议?如果可以在这里提供帮助,我很乐意使用 jQuery...

4

4 回答 4

146

只是return true相反?

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

于 2009-08-28T09:59:24.357 回答
41
<a href="#Foo" onclick="return runMyFunction();">Do it!</a>

function runMyFunction() {
  //code
  return true;
}

这样,您将执行您的功能,并且您将点击链接,并且您将在您的功能成功运行后完全点击链接。

于 2009-08-28T10:25:40.717 回答
7

如果链接应该只在函数运行成功的情况下更改位置,那么执行onclick="return runMyFunction();"并且在函数中您将返回 true 或 false。

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

附带说明一下,您可能应该改用事件处理程序,因为内联 JS 并不是一种非常理想的做事方式。

于 2009-08-28T10:02:03.150 回答
0

当做一个干净的 HTML 结构时,你可以这样做。

const element = document.getElementById('link_1')
element.onClick = function (e) {
    e.preventDefault()
    window.open('_top', element.getAttribute('href'))
}

使用 jQuery

$('a#link_1').click(function (e) {
    e.preventDefault()
    const a = e.target
    window.open('_top', a.getAttribute('href'))
})
于 2019-12-20T13:53:07.593 回答