Задать вопрос
Nolis
@Nolis
it-гопник

Можно ли сделать код проще на jQuery?

https://codepen.io/Nolis/pen/PoqZYRR
Можно ли как-то сократить подобный код?
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@fixeri
<div class="myclass">я текст</div>
<div class="arrowopen">я стрелка</div>
<div class="myclass">я текст</div>
<div class="arrowopen">я стрелка</div>
<div class="myclass">я текст</div>
<div class="arrowopen">я стрелка</div>
<div class="myclass">я текст</div>
<div class="arrowopen">я стрелка</div>


$('.arrowopen').click(function () {
  $(this).prev().toggle();
});
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Уберите цифры из классов кнопок, чтобы они, классы, стали одинаковыми.
Соответственно, const buttonSelector = '.arrowopen';.

Сокращаем код:

$(buttonSelector).click(e => $(e.currentTarget).prev().toggle());

Или, от jquery можно вообще избавиться:

document.addEventListener('click', ({ target: t }) =>
  (t = t.closest(buttonSelector)) &&
  (t.previousElementSibling.hidden ^= 1)
);

или

.hidden {
  display: none;
}

document.querySelectorAll(buttonSelector).forEach(function(n) {
  n.addEventListener('click', this);
}, e => e.currentTarget.previousElementSibling.classList.toggle('hidden'));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы