我有一个带有按钮的jquery对话框(我的按钮,而不是其中一个对话框按钮)。
设置对话框后,我有以下代码:
$('#bar').click(foo('baz'));
当我加载页面并显示对话框时,运行foo(不按#bar)。
如果代码是:
$('#bar').click(foo);
或
$('#bar').click(function(){foo('baz')});
foo没有跑。
为什么? 指向RTFM的地方,感激不尽。
只是为了澄清:为什么foo在没有按下按钮的情况下在第一个实例中运行(即在对话框初始化时),而foo不在后两个示例中运行。
哦,我想我刚刚解决了。
1.将foo的结果传递给click。 在2.我仍然不确定。 在3. anon函数被传递给click。
答案 0 :(得分:3)
这不等待点击呼叫foo
:
$('#bar').click(foo('baz'));
(执行此行时执行foo('baz')
,而不是在用户点击#bar
时执行
这不会将参数传递给foo
:
$('#bar').click(foo);
这可能就是你所需要的(除非foo
构建并返回一个函数,我猜它没有):
$('#bar').click(function(){foo('baz')});
它不起作用的事实可能是找不到标识为bar
的元素,或者您没有点击它。
详细说明:
执行时
foo(bar);
您使用参数foo
执行bar
。
温你执行
a = foo;
您为变量a
赋予值foo
,这可能是一个函数。
致电时
var a = function() {foo(bar)};
创建一个新的匿名函数,在调用时执行foo(bar)
,并将此新函数作为变量a
的值。
执行时
$('#bar').click(function(){foo('baz')});
你传递一个新函数,在调用时调用foo('baz')
作为$('#bar').click(
的参数。当您单击标识为bar
的元素时,JQuery会调用此函数。