我想用右鍵創建一個可重用的Header對象。點擊按鈕時,我的回調方法出現問題。它從未被調用過。Javascript回調方法不叫?
我的目標:
myHeader:function(params)
{
opt = {
title: "Title", //header tittle
fs: PrecApp.DEFAULT_HEADER_FONTSIZE, //font size
ignoreStack :true, //ignore stack
height: "70", //header height
rightButton: {
show :false, //show right button
background: "none", //background for right button
text: "Button", //text for right button
width: "auto",
height:"auto",
color:"black",
fontize:1,
extraCss: null,
onClick:function(){}
}
}
for (i in params) opt[i] = params[i];
if (opt.rightButton.show){
var right = $("#header .right");
right.click(opt.rightButton.onClick);
}
}
而且在我的html:
function updateLayout(){
PrecAppComponents.myHeader({
title:"My Title",
fs:1.5,
height:50,
rightButton:{
show:true,
background:"#ffff00",
text:"Right",
width:70,
height:30,
fontsize:1.1,
extraCss: {"float":"left", "font-size":"0.5em"},
onClick: PrecAppComponents.toggleDarkOverlay(true)
}
}
其他一切工作正常。如果我更換
right.click(opt.rightButton.onClick);
與
right.click(function(
console.log("clicked")
));
它工作正常。我究竟做錯了什麼?
你怎麼知道它不會被調用? 'function(){}'不做任何事情。 – Quentin
小心'這個'。如果你的'onClick'函數(我假設你在你的代碼中的其他地方做了非平凡的)使用'this',它將不會被設置爲'opt.rightButton',除非你明確地這樣做(例如使用'bind') 。 –
我想用'for(i in params)opt [i] = params [i];'他試圖用'params'擴展'opt'。 – dfsq