maralov
@maralov
фронт-джун

Почему slideUp() и slideDown() срабатывают несколько ршз?

Помогите решить проблему.
сайт - vseprovidhody.com.ua
на мобильном, меню в утере должно стать аккордеоном, разметка меню генериться вовдпресом

но на мобильных при клике срабатывает несколько раз в чем проблема и как решать?

https://ru.files.fm/f/2tqnpcwrz

$(window).on('load resize', function () {

  if ($(window).width() > 768) {
    $(".home-page-info-block .js-mob-collapse").show()
    return
  }

  const $accordionHeader = $(".menu-item > a:not([href])")

  $accordionHeader.not(":first").siblings('.sub-menu').hide()

  $accordionHeader.first().addClass("is-active");

  $('.footer__header').on('click', function (e) {
    const $target = $(e.target)
    if ($target.is('a') && $target.attr('href')) return

    e.preventDefault();

    const $subMenuElem = $target.siblings('.sub-menu')

    if ($target.hasClass('is-active')) {
      $target.removeClass('is-active')
      $subMenuElem.slideUp()
      return
    }

    $target.addClass('is-active')
    $subMenuElem.slideDown()

  })
})
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
Потому что при каждом resize, если $(window).width() <= 768 ты добавляешь новый обработчк клика, не удаляя старый. Подёргай окно сто раз - будет сто раз срабатывать при клике.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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