页面加载时调用的函数不是jquery .click

时间:2013-02-08 17:16:53

标签: javascript jquery

此功能在页面加载时调用,而不是在单击.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));

3 个答案:

答案 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); });