Задать вопрос

Почему переворачиваются все стрелочки в dropdown?

Всем привет
У меня есть вот такой скрипт который обеспечивает работу нескольким dropdown. каждый dropdown имеет одинаковую структуру и отличается только одним родительским классом ("link", "language" и "currency")

function dropdownFunctionality(dropdownParentClass) {
  $(`.${dropdownParentClass} .dropdown-toggle`).click(function () {
    $(this).next(`.${dropdownParentClass} .dropdown-content`).toggle();
    $(`.${dropdownParentClass} .dropdown-toggle-arrow`).toggleClass("rotate");
  });

  $(document).click(function (e) {
    var target = e.target;
    if (
      !$(target).is(`.dropdown.${dropdownParentClass}`) &&
      !$(target).parents().is(`.dropdown.${dropdownParentClass}`)
    ) {
      $(`.${dropdownParentClass} .dropdown-content`).hide();
      $(`.${dropdownParentClass} .dropdown-toggle-arrow`).removeClass("rotate");
    }
  });
}

$(function () {
  dropdownFunctionality("link");
  dropdownFunctionality("language");
  dropdownFunctionality("currency");
});


Эта линейка кода отвечает за переворачивание стрелочки dropdown
$(`.${dropdownParentClass} .dropdown-toggle-arrow`).removeClass("rotate");


У меня есть много элементов с классом link и все они имеют стрелочку с классом .dropdown-toggle-arrow, и при нажатии на элемент с классом .link все стрелочки переворачиваются одновременно.

Как это исправить?
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@ildar-meyker
Ваш код избыточен.
$(document).on('click', '.dropdown-toggle', function () {
  $(this).closest('.dropdown')
    .find('.dropdown-toggle-arrow').toggleClass('rotate').end()
    .find('.dropdown-content').slideToggle();
});
Ответ написан
Ваш ответ на вопрос

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

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