Javascript 在页面加载时调用的函数不是jquery。单击
此函数在页面加载时调用,而不是在单击.somebutton时调用。我不知道为什么。我希望能够传递变量,以便我可以在多个具有不同值的位置使用此函数。多谢各位Javascript 在页面加载时调用的函数不是jquery。单击,javascript,jquery,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)); 您正在将doso
var i = "this be i";
var u = "this be u";
function dosomething (var1, var2){
console.log(var1 + " and " + var2);
}
$(".somebutton").click(dosomething(i,u));
您正在将
dosomething(i,u)
返回的值传递给单击
处理程序。这就是为什么它不用点击就可以执行,只要你调用你的函数它就会发生(也就是说:dosomething(i,u)
)。您需要将函数调用包装在匿名函数中:
$(".somebutton").click(function() { dosomething(i,u); } );
您只能使用示例中的方法(即不带参数)通过引用传递函数。函数在加载时工作的原因是,由于后面的
()
括号,它会立即被调用
如果需要传递参数,则需要将其包装在匿名函数中,如下所示:
// on click:
$(".somebutton").click(function() {
dosomething(i, u);
});
// on page load:
dosomething(i, u);
在JavaScript中
$(".somebutton").click(dosomething(i,u));
不会将函数分配给单击事件,而是调用函数并分配函数返回的任何结果。您需要引用您的函数:
$(".somebutton").click(dosomething);
如果需要将变量传递给函数,则需要将所述函数包装到另一个匿名函数中:
$(".somebutton").click(function() { dosomething(i, u); });
fiddle或not existyeah,我没有看到外部声明的变量。谢谢,这是我第一次真正理解为什么这种行为有意义。