我一直在探索事件处理程序的自定义函数的使用。在这个精简的示例中,我试图在用户单击按钮时弹出警报。
但是页面加载时会立即弹出警告框!我究竟做错了什么? (评论部分做了完全相同的事情)。
如果我定义 bclick() 函数,例如
function bclick(foo, bar){ ... }
结果也是一样的。
标题中的JS:
<script type="text/javascript">
var bclick = function(foo, bar){alert( foo + " " + bar + "\n");}
//$(document).ready(function(){
// $("button").click(bclick("Button","Clicked"));
// });
$("button").click(bclick("Button","Clicked"));
</script>
正文中的相关 HTML:
<button>Click Me!</button>
最佳答案
您在通过函数之前就对其进行了评估。
$("button").click(bclick("Button","Clicked"));
此处,使用这些参数调用 bclick
,并将结果传递给 click
方法。您想像普通变量一样传递它,如下所示:
$("button").click(bclick);
但是,明显的问题是您无法传入自定义参数。
您还可以传入一个调用您的函数的匿名函数:
$("button").click(function() { bclick("Button", "Clicked"); });
关于jquery - 为什么使用单击事件处理程序时会执行非匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/948198/