2015-12-16 4 views
0

Я пытаюсь сделать класс в jQuery в первый раз, но что-то не так. Это какая-то часть моего кода:jQuery: «class» с массивом объектов

$.Tables.prototype = { 
    lineColor: 1, 
    items: [], 

    mountTable: function(ObjItems) { 
     trClass = ((this.lineColor%2) == 0) ? 'even' : 'odd'; 
     html = '<tr role="row" class="' + trClass + '">'; 

     $.each(ObjItems, function(key, val) { 
      html += '<td>' + val + '</td>'; 
     }); 

     html += '</tr>'; 

     this.lineColor++; 
     this.items.push(ObjItems); console.log(this.items); 

     return html; 
    } 
} 

консоль возвращает пустой массив, я не понимаю, почему. Но если я использую «толчок» в два раза, это работает:

$.Tables.prototype = { 
    lineColor: 1, 
    items: [], 

    mountTable: function(ObjItems) { 
     trClass = ((this.lineColor%2) == 0) ? 'even' : 'odd'; 
     html = '<tr role="row" class="' + trClass + '">'; 

     $.each(ObjItems, function(key, val) { 
      html += '<td>' + val + '</td>'; 
     }); 

     html += '</tr>'; 

     this.lineColor++; 
     this.items.push(ObjItems); 
     this.items.push(ObjItems); 
     console.log(this.items); 

     return html; 
    } 
} 

Кто есть Ideia, почему это происходит?

- спасибо

+0

Можете ли вы разместить рабочий образец с https://jsfiddle.net/? –

+0

Не знаю, почему в jsFiddle работает нормально! https://jsfiddle.net/kaiunido/6yzqkh9c/ Разница между jsfiddler и моими файлами - все js-коды находятся в одном месте в jsfiddler. –

ответ

0

Я думаю, что решить эту проблему, создавая метод инициализации.

init: function() { 
    this.items = []; 
}, 

и вызов метода следующее заявление:

var table = new $.Tables(); 
table.init(); 

Спасибо.

Смежные вопросы