我正在玩一个我想要绑定到所有链接的函数。目前,该功能在页面加载时触发,而不是在我点击链接时触发。
这是我的代码。 (如果你需要看的话,我可以发布函数showDiv()
。)你能告诉我这里做错了什么或者做错了吗?
$(document).ready(function(){
$('a.test').bind("click", showDiv());
});
谢谢!
答案 0 :(得分:62)
您希望将引用作为回调传递给函数,而不是函数执行的结果:
showDiv()
返回一些值;如果未使用return
语句,则返回undefined
。
showDiv
是对应该执行的函数的引用。
这应该有效:
$(document).ready(function(){
$('a.test').bind("click", showDiv);
});
或者,您可以使用匿名函数执行更高级的功能:
...bind('click', function(){
foo.showDiv(a,b,c);
...more code...
});
在某些情况下,您可能希望使用函数返回的值作为回调:
function function foo(which)
{
function bar()
{
console.log('so very true');
}
function baz()
{
console.log('no way!');
}
return which ? bar : baz;
}
...click( foo( fizz ) );
在此示例中,foo
使用fizz
进行评估,并返回一个函数,该函数将被指定为click事件的回调。
答案 1 :(得分:5)
看起来你正在那里直接调用showDiv函数(并将showDiv()的返回结果绑定到click处理程序而不是直接绑定它。
你想要像
这样的东西$(document).ready(function() { $('a.test').bind("click", showDiv); });
答案 2 :(得分:4)
使用以下行。 <{1}}会在执行该行时立即调用该函数。
showDiv()
答案 3 :(得分:3)
将其更改为:$('a.test').bind("click", showDiv);
(不要将问题放在showDiv
左右,因为您要传递函数参考。)