2012-05-30 3 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

Это в аа другой области, попробуйте:

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; 
} 

To:

(function(i){ 
    return function(){ 
     this.tabs[i].step = 1; 
    } 
})(i) 
Смежные вопросы