У меня есть объект javascript, который я создаю для каждого экземпляра объекта dom.Мой код выглядит примерно так:
let div = null;
$(function() {
div = {
init: function(container) {
this.loadDom(container);
this.loadEvents();
},
loadDom:function(container) {
this.$container = $(container);
this.$buttons = this.$container.find('.button');
this.$textPanel = $('.text-panel')
},
loadEvents: function() {
let that = this;
// output the item's id. This works correctly
that.$textPanel.append(that.$container.attr('id') + '<br>');
this.$buttons.on('click', function() {
// output the item's id. This always outputs the last item
that.$textPanel.append(that.$container.attr('id') + '<br>');
});
}
};
let divs = $('.item');
if(divs.length > 0) {
divs.each(function(){
div.init(this);
})
}
});
, вот скрипка
Я ожидаю, что для каждого div будет создан один объект с классом 'item',и все функции в этом объекте, чтобы применить к этому одному div.т.е. когда вы щелкаете по красному элементу div, идентификатор контейнера должен отображаться на панели ниже.
В функции loadEvents я перечисляю id текущего div.Это запускается сразу и правильно перечисляет «модал-1» и «модал-2».Но когда я запускаю ту же команду после нажатия кнопки, всегда отображается идентификатор последнего элемента div, а не текущий элемент div.
Как сделать так, чтобы нажатие кнопки работало так, чтобы отображался идентификатор правильного элемента div?
Спасибо