2016-09-19 82 views
-1
function foo(){ 
    var a = 1; 
    this.b = 2; 

    this.c = function(){ 
     alert(a); 
     alert(this.b); 

     $('.ei').each(function(){ 
      alert(a); 
      alert(this.b);//undefined <-- i need this to be update to 3 
     }); 
    } 

} 

var obj = new foo; 
obj.b = 3; //update this property before call method 
obj.c(); 

我有一个方法包含jQuery的每个(),我尝试访问该对象的属性,但我得到了一个未定义jQuery的无法访问对象的内部属性

我需要这个属性能够更新

有人知道如何使这项工作?

+1

'this'''''''''将引用集合中的当前元素。将'this'缓存到'that'并使用'that.b'。 – Tushar

回答

0

您需要将其绑定到函数。

this.c = function(){ 
    alert(a); 
    alert(this.b); 

    $('.ei').each(function(){ 
     alert(a); 
     alert(this.b);//undefined <-- i need this to be update to 3 
    }.bind(this)); 
}.bind(this); 
+0

我只是尝试,它不工作,并在每个()的末尾错过“)”; –

+0

是的,你需要.bind(this)分配给this.c的函数,它应该工作。我编辑后,请现在检查。 –

+0

如果你在你的词法范围中需要变量,那么真的不需要使用'.bind'_ - 效率不如只是自己对别名进行别名 – Alnitak