2012-05-30 196 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)