$.each() jquery 中未定义变量
2014-04-16
1227
我在 javascript 中使用此类:
function rMotoristaList() {
}
rMotoristaList.prototype.permInsert = false;
rMotoristaList.prototype.permSelect = false;
rMotoristaList.prototype.permUpdate = false;
rMotoristaList.prototype.permDelete = false;
rMotoristaList.prototype.init = function() {
// Pega as permissoes
var perm = new cPermissao();
this.permInsert = perm.verificaPermissao(ID_CAD_MOTORISTAS, "insert");
this.permUpdate = perm.verificaPermissao(ID_CAD_MOTORISTAS, "update");
this.permDelete = perm.verificaPermissao(ID_CAD_MOTORISTAS, "delete");
if (this.permInsert == false) {
$("#btn-add-novo").hide();
}
};
rMotoristaList.prototype.renderGrid = function(data) {
var html = "";
// Faz o loop em todos os elementos retornados
$.each(data,function(index, motorista) {
if (this.permUpdate != false) {
//Do something
}
}
};
属性
permUpdate
为
false
,但是,当我在 $.each() 内部比较它时,不起作用,我收到了一个
undefined
。
如何在
$.each()
中获取
this.permUpdate
的值?
3个回答
匿名函数内部的
this
将不会引用
rMotoristaList
。您可以缓存
this
并使用它。
rMotoristaList.prototype.renderGrid = function(data) {
var html = "",
self = this;
// Faz o loop em todos os elementos retornados
$.each(data,function(index, motorista) {
if (self.permUpdate != false) {
//Do something
}
};
2014-04-16
$.each()
中的
this
指的是
.each()
的函数上下文,而不是代码中的上下文。您可以做的是将上下文保存在
.each()
块之外,在 JavaScript 中它被称为闭包,请参阅
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures
。
rMotoristaList.prototype.renderGrid = function(data) {
var html = "";
var that = this;
// Faz o loop em todos os elementos retornados
$.each(data,function(index, motorista) {
if (that.permUpdate != false) {
//Do something
}
}
} ;
Amy
2014-04-16
还有另一种方法,在这种情况下可能会更好一些...
rMotoristaList.prototype.renderGrid = function(data) {
var html = "";
// Faz o loop em todos os elementos retornados
$.each(data,function(index, motorista) {
if (this.permUpdate != false) {
//Do something
}
}.bind(this)); // <-- Bind the function to the right context.
};
这样你实际上是在说,这个函数应该在 rMotoristaList 实例的上下文中执行。
FredyC
2014-04-16