我正在尝试创建一个足够灵活的PHP后端,因此不需要将其重新编码为我可能想要使用的任何前端。部分原因是我试图从后端传递JSON,然后将其转换为msgbox。
这是来自我的测试页面,Firebug不断给我一个错误说:
missing : after property id
mybutton.title: mybutton.action
的
提到mybutton.title
值。
这是我正在玩的代码:
var mybutton = new Object();
var mybutton = {'title': 'Done', 'action': function (){$(this).remove();}};
var title = mybutton.title;
var msg = "hello from the grave";
$("#SiteHolder").html(msg);
$("#SiteHolder").dialog({ autoOpen: true, autoResize: true, width: 600, close: function(event, ui){$(this).remove();}, buttons: {
mybutton.title: mybutton.action
}
});
我也尝试将mybutton.title
分配给变量,但它只返回变量名而不是内容。
请记住,在某些时候,这将扩展为一系列按钮。
答案 0 :(得分:1)
对话框按钮的定义方式如下:
$( ".selector" ).dialog({ buttons: [
{
text: mybutton.title,
click: mybutton.action
}
] });
请永远不要写
var mybutton = new Object();
但
var mybutton = {};
如果你想稍后扩展它,只需将mybuttons定义为一个对象数组并说:
$( ".selector" ).dialog({ buttons: mybuttons });
答案 1 :(得分:1)
一个好方法是解决你的更大问题(最小化前端/后端依赖关系)是使用一个现成的模板组件,它主要采用JSON作为参数,并且可以很好地处理解析HTML。这也有助于将HTML结构与创建它的代码分开,从长远来看,IME可以帮助维护。
答案 2 :(得分:0)
您无法评估对象键mybutton.title
。代替:
var buttons = {};
buttons[mybutton.title] = mybutton.action;
$("#SiteHolder").dialog({
autoOpen: true,
autoResize: true,
width: 600,
close: function(event, ui) {
$(this).remove();
},
buttons: buttons
});