javascript - 如何使用参数将函数附加到事件处理程序

标签 javascript jquery event-handling

我正在用 jQuery 编写,希望在单击元素时发生一些事情。我想要调用的函数需要参数,并且必须始终监视该事件,因此处理程序位于 $(document).ready() 中。这就是我的意思:

"use strict"
$(document).ready(function(){
    $("<button>").each(
        $(this).click(doSomething)
    );    
});
function doSomething(message){
    alert(message);
}

问题是 doSomething 需要一条可以发出警报的消息。但是,如果我将代码更改为:

$(document).ready(function(){
    $("<button>").each(
        $(this).click(doSomething("Hello world"))
    );    
});
function doSomething(message){
    alert(message);
}

然后页面加载时会弹出“Hello world”提示,点击按钮不会执行任何操作。如何保持第一种方式的行为,但向方法传递参数?

最佳答案

您需要传递一个匿名函数,然后该函数使用所需的参数调用您的函数:

$(document).ready(function(){
    $("button").click(function() {
            doSomething("Hello world!");
        });
    );    
});
function doSomething(message){
    alert(message);
}

请注意,我已经修改了选择器,以便它选择现有的 <button>元素而不是创建一个新元素,并删除了不必要的 .each().click()已经隐式迭代匹配的元素。

关于javascript - 如何使用参数将函数附加到事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232270/

相关文章:

javascript - 在包含的 html 文件上定位图像

c# - Javascript getElementbyId 工作一次但不能工作两次?

javascript - safari 和 jQuery 的 CSS 填充不加载

javascript - 如何在 animate 中将 "+="赋值运算符与变量一起使用?

python - 在 Python 中从同一类中的另一个调用一个方法

jquery - 单击时使用 jQuery 拆分或连接文本

javascript - Bootstrap 模态加载事件

javascript - innerHTML 结合 parseFloat

javascript - 单击显示更多(按钮)后如何将主题列表限制为 5(项目)仅显示 3(项目)

javascript - 在触发函数以在 JavaScript 中执行之前等待