Новые блоки создаются во всех уже сгенерированных. Хотя объекты же разные.
У вас главная проблема в том, что каждый экземпляр класса CategoryManager воздействует на все блоки, а не только на свой блок.
Правильным решением в этом случае будет держать в классе поле, например,
rootElement
, и в конструктор передавать блок, к которому CategoryManager привязан, а класс уже переписать в следующем виде:
class CategoryManager {
constructor(rootElement) {
this.rootElement= rootElement;
this.currentCounter = this.rootElement.find('.category-card').length + 1;
}
render(categoryBlock) {
this.categoryHtml = categoryBlock;
this.rootElement.find(".categories-content").append(this.categoryHtml);
this.currentCounter = this.rootElement.find('.category-card').length;
}
getCounter() {
return this.currentCounter;
}
addSubcategory() {
this.rootElement.find('.category-card__subblock-' + this.getCounter()).append(addSubCategory());
console.log(this.getCounter());
}
}
В итоге, каждый экземпляр класса CategoryManager будет воздействовать только на свой блок, а не на все блоки страницы