Javascript 将变量传递给回调方法
这个问题与jQueryUI的对话框关系不大,而与JavaScript关系更大 我将一些变量传递给Javascript 将变量传递给回调方法,javascript,jquery,jquery-callback,Javascript,Jquery,Jquery Callback,这个问题与jQueryUI的对话框关系不大,而与JavaScript关系更大 我将一些变量传递给ayb.dialogError(),并使用它们创建一个对话框。然后我传递不同的值,但仍然使用第一个值 下面的脚本经过压缩以突出显示问题,完整脚本位于 在open回调中,如何访问传递给ayb.dialogError()的变量 $(函数(){ ayb={}; ayb.dialogErrorElem=未定义; ayb.dialogError=函数(t,e){ 如果(类型为ayb.dialogErrorEle
ayb.dialogError()
,并使用它们创建一个对话框。然后我传递不同的值,但仍然使用第一个值
下面的脚本经过压缩以突出显示问题,完整脚本位于
在open
回调中,如何访问传递给ayb.dialogError()
的变量
$(函数(){
ayb={};
ayb.dialogErrorElem=未定义;
ayb.dialogError=函数(t,e){
如果(类型为ayb.dialogErrorElem===‘未定义’){
ayb.dialogErrorElem=$('').appendTo('body').dialog({
打开:功能(事件、用户界面){
console.log('dialog.open',t,e);
//t=函数(){return t;}
//e=函数(){return e;}
},
});
控制台日志(ayb.dialogErrorElem);
};
ayb.dialogErrorElem.dialog(“打开”);
}
$('#e1')。单击(函数(){ayb.dialogError('Title1',['error1-1','error1-2']);
$('#e2')。单击(函数(){ayb.dialogError('Title2','error2-1'));
});
Atif(typeof ayb.dialogErrorElem==='undefined'){
ayb.点击two
按钮时,对话框ErrorElem
未定义
jsbin我认为这不是最好的方法,但是,传递的参数可用于open
回调
下面是浓缩的脚本以突出概念,完整的脚本位于
如果有更好的方法使参数在回调中可用(我肯定有),请发表评论
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');
}
ayb.dialogError=函数(t,e){
getEm=function(){return{e:e,t:t};}
var v={e:e,t:t};//不起作用
if(typeof this.dialog===‘未定义’){
this.dialog=$('',{})
.对话({
打开:功能(事件、用户界面){
log('dialog.open!中的值错误!',t,e,v.t,v.e);
var o=getEm();
log('Right values!',o);
}
});
};
this.dialog.dialog('open');
}
您所说的“传递给ayb.dialogError()的变量”是什么意思?t
和e
参数?它们应该在回调中可用。}处的尾随逗号,
?以下console.log('dialog.open',t,e)代码>?@最后面的,但它们不是。在jsbin演示中,尝试单击其中一个按钮,然后单击另一个按钮。第二次,e
和t
参数仍然使用第一次使用的参数。@guest271314应该没关系。@hindmost我只在第一次创建对话框时传递参数,因此它当然只使用阀门。相反,我需要回调函数不要像最初创建时那样使用它们,而是从上面以某种方式获取它们。这就是为什么我认为它们应该是t=function(){return t;}
,但这也不起作用。是的,这是我的意图,因为我认为不这样做是浪费。我也明白为什么我得到的结果完全是他们应该得到的。在open
回调中,我的希望是使用一些额外的回调来获取e
和t
值。尝试设置ayb。dialogErrorElem
返回未定义的在关闭事件中?我感谢您的帖子,我同意每次创建元素或将其设置回未定义的都会起作用,但问题是如何在回调中使用传递的参数。@user1032531。添加了ayb.dialogErrorElem=未定义代码>下面的$(this).dialog(“close”)代码>参见输出,控制台
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');
}