我想用參數調用事件處理程序。它沒有爭論就可以正常工作。使用參數調用事件處理程序
我在哪裏錯了?
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