littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.

Какой подход оптимальнее?

Есть данные в формате json. JS парсит и на их основе создает элементы на странице.
Для каждого объекта в json есть несколько элементов на странице и они связаны:
карточка элемента, элемент в меню, чекбокс. лейбл, иконка.

При клике на каждый должно происходить какое-то действие с другим связанным элементом(например, при клике на чекбокс, скрывать карточку, а при клике на карточку - подсвечивать пункт меню).

Собственно вопрос, какой из этих 2 путей выбрать и что будет оптимальнее/правильнее:

1. Создать массив, в который записывать объекты для каждого элемента, например:
var items = [];
...
var current_elem = {};
current_elem.menuDiv = createDiv();
current_elem.iconDiv = createDiv();
current_elem.cardDiv =  createDiv();
current_elem.checkboxDiv =  createDiv();
current_elem.labelDiv =  createDiv();
items.push(current_elem);
...


И в каждом элементе в атрибуте('data-element-id') хранить порядковый номер элемента в массиве и по нему уже обращаться.

2. в каждом элементе в атрибуте('data-element-id') хранить порядковый номер элемента, но каждый раз при клике на объект вычислять зависимый через document.getElementById();

То есть нужно при клике по чекбоксу скрыть карточку - ок:
hide(document.getElementById('checkbox-for-' + this.getAttribute('data-element-id')));


Для тех, кто не умеет читать вопросы: ВОПРОС НЕ В ТОМ, КАК СДЕЛАТЬ ТОТ ИЛИ ИНОЙ ВАРИАНТ, А КАКОЙ ИЗ ВАРИАНТОВ ВЫБРАТЬ И ПОЧЕМУ
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
@Ridz
зачем искать, если у вас всё уже есть ...
current_elem.checkboxDiv.addEventListener('click', function() {
           hide(current_elem.cardDiv);
        },false);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы