@das_pupkin

Ссылка внутри «аккордеона» не работает, как исправить?

Суть в следующем, есть код аккордеона
(function($) {

    $('.accordion a').click(function(j) {
        var dropDown = $(this).closest('li').find('div');

        $(this).closest('.accordion').find('div');

        if ($(this).hasClass('active')) {
            $(this).removeClass('active');
        } else {
            $(this).closest('.accordion').find('a.active').removeClass('active');
            $(this).addClass('active');
        }

        dropDown.stop(false, true).slideToggle();

        j.preventDefault();
    });
})(jQuery);

при этом все ссылки внутри аккордеона не работают.
То есть происходит складывание/раскладывание аккордеона и все.
Понимаю, что нужно использовать preventDefault(), но не понимаю где.
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
RAX7
@RAX7
Так у тебя обработчик повешен на все кнопки внутри аккордеона $('.accordion a'), а должен только на кнопки отвечающие за складывание/раскладывание. А еще лучше не делать контролы ссылками, а сделать их кнопками button, тогда и preventDefault() не понадобится.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@das_pupkin Автор вопроса
Но если html аккордеона выглядит так:
<ul class="accordion">
<li><a>HEADER OF ACCORDION MENU 1</a>
<div>CONTENT</div></li>
<li><a>HEADER OF ACCORDION MENU 2</a>
<div>CONTENT</div></li>
</ul>

то к чему еще привязываться?
Ответ написан
Ваш ответ на вопрос

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

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