这个问题与jQueryUI的对话框没什么关系,更多的是与JavaScript有关。
我将一些变量传递给ayb.dialogError()
,并使用它们来创建对话框。然后我传递了不同的值,但第一个仍在使用。
以下脚本经过精简以突出显示问题,完整脚本位于https://jsbin.com/muhijodima。
在open
回调中,如何访问传递给ayb.dialogError()
的变量?
$(function(){
ayb={};
ayb.dialogErrorElem=undefined;
ayb.dialogError=function(t,e) {
if (typeof ayb.dialogErrorElem === 'undefined') {
ayb.dialogErrorElem=$('<div/>').appendTo('body').dialog({
open: function(event, ui){
console.log('dialog.open',t,e);
//t=function(){return t;}
//e=function(){return e;}
},
});
console.log(ayb.dialogErrorElem);
};
ayb.dialogErrorElem.dialog('open');
}
$('#e1').click(function(){ayb.dialogError('Title1',['error1-1','error1-2'])});
$('#e2').click(function(){ayb.dialogError('Title2','error2-1')});
});
答案 0 :(得分:0)
ayb.dialogErrorElem
undefined
two
后, button
不是#call-to-action a:link, #call-to-action a:visited {
color:yellow ;
}
答案 1 :(得分:0)
我希望这不是最好的方法,但是,传递的参数可用于open
回调。
下面的简明脚本突出显示概念,以及https://jsbin.com/segoxewape/edit?html,output处的完整脚本。
如果有更好的方法可以在回调中提供参数(我确信有),请发表评论。
ayb.dialogError=function(t,e) {
getEm=function(){return {e:e,t:t};}
var v={e:e,t:t}; //Won't work
if (typeof this.dialog === 'undefined') {
this.dialog=$('<div/>', {})
.dialog({
open: function(event, ui){
console.log('Wrong values in dialog.open!',t,e,v.t,v.e);
var o=getEm();
console.log('Right values!',o);
}
});
};
this.dialog.dialog('open');
}