jquery - 为什么使用单击事件处理程序时会执行非匿名函数?

标签 jquery events function

我一直在探索事件处理程序的自定义函数的使用。在这个精简的示例中,我试图在用户单击按钮时弹出警报。

但是页面加载时会立即弹出警告框!我究竟做错了什么? (评论部分做了完全相同的事情)。

如果我定义 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/

相关文章:

javascript - 负载 ~ 400(错误请求)。 XmlHttpRequest 适用于本地,但不适用于服务器端

javascript - 什么可以抵消我的表格工作

wpf - 使用RX来减少鼠标移动事件的频率

多次调用函数中的c++大 vector

javascript - 是否可以在 new Function() 之后更改函数范围?

javascript - AngularJS 在 ajax load() 函数之后将范围绑定(bind)到 html

jquery - Onchange 函数在 Jquery 中不起作用

c# - 如何触发当前类(class)无法触及的事件?

c# - FileSystemWatcher 在一段时间后停止引发事件

javascript - 从数组中的对象继承/调用函数