我正在尝试使用参数调用事件处理程序。没有争论就可以正常工作。
我在哪里错了?
var box = $("#box");
function changeColor (a) {
$(this).css("background", a);
}
box.click(changeColor("green"));
答案 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)
答案 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