我想创建一个执行一些JavaScript的锚标记,然后继续前往href
所采用的任何地方。调用执行我的JavaScript然后将window.location
或top.location
设置为href
位置的函数对我不起作用。
所以,想象一下我在页面上有一个id为“Foo”的元素。我想创作一个类似于:
的锚<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>
单击此按钮时,我想执行runMyFunction,然后将页面跳转到#Foo
(不会导致重新加载 - 使用top.location
会导致重新加载页面。)
连连呢?我很高兴使用jQuery,如果它可以帮助...
答案 0 :(得分:119)
只是return true
而已?
onClick
代码的返回值决定了链接的固有点击操作是否得到处理 - 返回false
表示未处理,但返回{{1}然后浏览器将在您的函数返回后继续处理它并转到正确的锚点。
答案 1 :(得分:27)
<a href="#Foo" onclick="return runMyFunction();">Do it!</a>
和
function runMyFunction() {
//code
return true;
}
通过这种方式,您将执行您的功能并且您将按照链接进行操作,您将在功能成功运行后完全按照链接进行操作。
答案 2 :(得分:7)
如果链接只应在函数运行成功时更改位置,那么执行onclick="return runMyFunction();"
并在函数中返回true或false。
如果您只想运行该函数,然后让anchor标记完成其工作,只需删除return false
语句。
作为旁注,您应该使用事件处理程序,因为内联JS不是一种非常理想的处理方式。
答案 3 :(得分:0)
制作干净的HTML结构时,可以使用它。
//Jquery Code
$('a#link_1').click(function(e){
e . preventDefault () ;
var a = e . target ;
window . open ( '_top' , a . getAttribute ('href') ) ;
});
//Normal Code
element = document . getElementById ( 'link_1' ) ;
element . onClick = function (e) {
e . preventDefault () ;
window . open ( '_top' , element . getAttribute ('href') ) ;
} ;
<a href="#Foo" id="link_1">Do it!</a>