我想用参数调用事件处理程序。它没有争论就可以正常工作。使用参数调用事件处理程序
我在哪里错了?
var box = $("#box");
function changeColor (a) {
$(this).css("background", a);
}
box.click(changeColor("green"));
我想用参数调用事件处理程序。它没有争论就可以正常工作。使用参数调用事件处理程序
我在哪里错了?
var box = $("#box");
function changeColor (a) {
$(this).css("background", a);
}
box.click(changeColor("green"));
您需要使用call()调用里面click
事件的功能:
var box = $("#box");
function changeColor (a) {
$(this).css("background", a);
}
box.click(function(){
changeColor.call(this, "green");
});
要调用你的changeColor函数,而不是把它当作回调。相反,你应该做的:
box.click(changeColor.bind(this, "green"));
bind方法创建已填写参数的新功能,它几乎等同于做:
box.click(function() {
changeColor("green");
});
var box = $("#box");
function changeColor (a) {
$(this).css("background", a);
}
box.click(function(){
changeColor("green");
});
首先评估所有参数。所以,如果你有'foo(bar())','bar'首先被调用并且它的返回值被传递给'foo'。 –
另外一个[我如何将参数传递给jQuery中的事件处理程序?](http://stackoverflow.com/q/979337/218196) –
@navigator您需要使用'call()',检查我的答案。 – Felix