【发布时间】:2015-11-23 15:28:07
【问题描述】:
我正在做我自己的 jQuery 插件来显示搜索屏幕。我正在测试代码,但我的代码有问题...
我在我的代码中执行了一系列链接事件,并且在代码中的某个确定点,我失去了被调用的原始范围(分析得很好,结果是预期的,但不是我想要的)
我可以做些什么来保留this对象的原始范围
_load_zona: function(e){
var ev;
ev = {
names:{
key: 'id_zona',
value: 'zona',
},
elements:{
form: this.o.form_name,
select: 'zona'
},
data:{
id_gerencia: $(this.o.form_name + ' select[name="gerencia"]').val(),
id_zona: this.o.seleccion.id_zona
},
events:{
success: this._load_depto
},
url: this.o.url.zona,
defaultText: 'Seleccione una zona ...'
};
if(this.o.csrf !== undefined){
ev.names["csrf"] = this.o.csrf.key;
ev.data[this.o.csrf.key] = this.o.csrf.value;
}
this._commonFillSelect(ev);
},
_load_gerencia: function(e){
var ev;
ev = {
names:{
key: 'id_gerencia',
value: 'gerencia',
},
elements:{
form: this.o.form_name,
select: 'gerencia'
},
data:{
id_gerencia: this.o.seleccion.id_gerencia
},
events:{
success: this._load_zona
},
url: this.o.url.gerencia,
defaultText: 'Seleccione una gerencia ...'
};
if(this.o.csrf !== undefined){
ev.names["csrf"] = this.o.csrf.key;
ev.data[this.o.csrf.key] = this.o.csrf.value;
}
this._commonFillSelect(ev);
},
this._commonFillSelect(ev) 它的一个函数使通过 AJAX 填充选择选项的过程,在必要时更新组件,当一切正常时,从成功中获取值并执行它。
此代码位于外部 JavaScript 文件中
总之就是这样
_load_Gerencia() --------> _commonFillSelect() ----> _load_zona();
当执行_load_zona(); 时,this 对象已经改变了它们的范围,它是我在_load_gerencia() 中引用的原始 this 对象。
【问题讨论】:
-
@michael 感谢所有的更正。注意....
标签: javascript jquery scope