Kozack
@Kozack
Thinking about a11y

Как максимально быстро добавить нескольким элементам атрибут?

На странице есть массив кнопок. Части из них необходимо добавить атрибут disabled. Какой наиболее производительный способ? Я так понимаю добавлять атрибут по одному каждой кнопке плохое решение, так как это много модификаций DOM, да ещё и каждое такое изменение тригерит анимацию (изменяются стили у заблокированной кнопки)
  • Вопрос задан
  • 63 просмотра
Решения вопроса 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Никак. Даже если взять фреймворк, то и там где-то внутри будет тупо цикл.

Во-первых, производительность вас беспокоит зря, основная нагрузка это reflow, а он не должен происходить только потому что кнопку задизейблели (конечно, все зависит от верстки).
Во-вторых, если кнопки лежат в каком-то общем контейнере, а атрибут не является жестким требованием, то можно обойти это классом.
.disable-all-buttons button {
  pointer-events: none; /* отключаем реакцию на клик и тап */
  opacity: 0.6; /* делаем кнопку "бледной" */
}

Кидаем этот класс на общий контейнер и bob's your uncle.
Ответ написан
hzzzzl
@hzzzzl
никак иначе, только в цикле
(да и ладно много модификаций, сколько там таких кнопок, 1000 что ли, не должно влиять на производительность)

document.querySelectorAll('.button-to-disable').forEach(btn => btn.disabled = true)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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