使用参数调用事件处理程序

时间:2014-02-20 16:44:06

标签: javascript jquery

我正在尝试使用参数调用事件处理程序。没有争论就可以正常工作。

我在哪里错了?

var box = $("#box");

function changeColor (a) {
    $(this).css("background", a);
}

box.click(changeColor("green"));

5 个答案:

答案 0 :(得分:2)

您需要使用 call() click事件中调用您的函数:

var box = $("#box");

function changeColor (a) {
    $(this).css("background", a);
}

box.click(function(){
   changeColor.call(this, "green");
});

<强> Fiddle Demo

答案 1 :(得分:0)

使用.call()

Fiddle Demo

box.click(function(){
   changeColor.call(this, "green");
});

答案 2 :(得分:0)

您正在调用changeColor函数,而不是将其作为回调传递。相反,你应该这样做:

box.click(changeColor.bind(this, "green"));

bind方法创建一个已填充参数的新函数,它几乎等同于:

box.click(function () {
    changeColor("green");   
});

答案 3 :(得分:0)

var box = $("#box");

function changeColor (a) {
    $(this).css("background", a);
}

box.click(function(){
   changeColor("green");
});

答案 4 :(得分:0)

您正尝试将changeColor()的返回值分配给box.click()而不是函数本身。将changeColor()包含在函数中,如下所示将box.click()设置为函数

box.click(function(){
   changeColor.call(this, "green")
});

请参阅Fiddle