2016-09-19 75 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