此功能在页面加载时调用,而不是在单击.somebutton时调用。我不知道为什么。我希望能够传递变量,以便我可以在具有不同值的多个地方使用此函数。非常感谢你。
var i = "this be i";
var u = "this be u";
function dosomething (var1, var2){
console.log(var1 + " and " + var2);
}
$(".somebutton").click(dosomething(i,u));
答案 0 :(得分:6)
您将dosomething(i,u)
返回的值传递给click
处理程序。这就是为什么它在没有点击的情况下执行的原因,只要你调用你的函数就会发生这种情况(即:dosomething(i,u)
)。您需要将函数调用包装在匿名函数中:
$(".somebutton").click(function() { dosomething(i,u); } );
答案 1 :(得分:1)
您只能使用示例中的方法(即没有参数)通过引用传递函数。您的函数在加载时工作的原因是因为尾随()
括号而立即调用它。
如果需要传递参数,则需要将其包装在匿名函数中,如下所示:
// on click:
$(".somebutton").click(function() {
dosomething(i, u);
});
// on page load:
dosomething(i, u);
答案 2 :(得分:1)
在JavaScript中执行
$(".somebutton").click(dosomething(i,u));
不会将函数分配给click事件,而是调用函数并分配函数返回的结果。您需要引用您的功能:
$(".somebutton").click(dosomething);
如果你需要将变量传递给你的函数,那么你需要将所述函数包装在另一个匿名函数中:
$(".somebutton").click(function() { dosomething(i, u); });