2012-05-30 237 views
0

我有這樣的代碼:如何訪問類屬性?

function myClass() { 

    this.tabs = new Array(); 

    myClass.prototype.focus_tab = function animateTab(nr){ 
     for(i=0;i<this.tabs.length;i++){ 
      $('#' + i + '-image').stop().animate(
       { left: '100px' }, 
       100 , function(){ 
        this.tabs[i].step = 1; 
       } 
      ); 
     } 
} 

,但功能在動畫的結尾不承認「this.tabs」。 如何做得好?

+0

JavaScript中沒有任何類。 – corazza

+0

以數字開頭的ID不是有效的HTML。 –

回答

3

它在AA不同的範圍,嘗試:

function myClass() { 
    this.tabs = new Array(); 

    myClass.prototype.focus_tab = function animateTab(nr){ 
    for(i=0;i<this.tabs.length;i++){ 
     var mytab = this.tabs[i]; 
     $('#' + i + '-image').stop().animate({ left: '100px' }, 100 , function(){ 
      mytab.step = 1; 
     } 
    ); 
    } 
} 

還有一些其他的問題,以及,但評論的問題已經在其中一些地方!

0

這是classic scoping issue的另一個示例。您只有一個i變量,共享您的所有回調。您需要爲每個回調製作本地i。改變你回叫:

function(){ 
    this.tabs[i].step = 1; 
} 

要:

(function(i){ 
    return function(){ 
     this.tabs[i].step = 1; 
    } 
})(i)