我想用右键创建一个可重用的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