ВыборныйСписок = function(элемент, настройки) { // Конструктор. this.отклик = {}; if (!настройки) { настройки = { "макет": { "элемент": `
  • %название%
  • `, }, }; } this.задатьЗаголовок = (заголовок) => { this.заголовок = заголовок; this.__пересобрать(); }; this.задатьСписок = (список) => { this.список = список; this.__пересобрать(); }; this.очиститьВыбор = () => { for (var номер in this.список) { var id = `${элемент.id}-${номер}`; $(`#${id}`).removeClass("uk-active"); } }; this.выбратьЭлемент = (номер) => { this.очиститьВыбор(); $(`#${элемент.id}-${номер}`).addClass("uk-active"); }; this.__пересобрать = () => { this.__задатьЗаголовокИСписок(); this.__отслеживатьВыбор(); } this.__задатьЗаголовокИСписок = () => { var содержимое = ""; for (var номер in this.список) { var название = this.список[номер]; var id = `${элемент.id}-${номер}`; var пункт = настройки.макет.элемент .replace(/%название%/g, название) .replace(/%id%/g, id) ; содержимое += пункт; } if (this.заголовок && this.заголовок.length) { содержимое = `
  • ${this.заголовок}
  • ${содержимое} `; } элемент.innerHTML = содержимое; }; this.__отслеживатьВыбор = () => { var тут = this; for (var номер in this.список) { var id = `${элемент.id}-${номер}`; const номерПункта = номер; $(`#${id}-ссылка`).click(function() { if (тут.отклик && тут.отклик.выбор) { тут.отклик.выбор(номерПункта); } }); } }; };