У меня есть простой слайдер меню/аккордеона. Я хочу добавить class = "active" к нажатой ссылке и сдвинуться вниз, чтобы показать UL. Когда нажимается другой отдельный элемент меню, активный класс следует удалить из предыдущего элемента и добавить к только что нажатому. Также если в активном режиме нажать одно и то же нажатие, слайдер должен сдвинуться вверх и удалить активный класс.slideToggle удалить другие активные классы
Я пробовал различные конфигурации ниже, но каждый раз у меня возникают проблемы с удалением активного класса, если одно и то же нажатие сдвинется вверх. Любая помощь приветствуется.
$(document).ready(function(menuSlide) {
$('li.menu-item-has-children a').click(function() {
if ($('li.menu-item-has-children a').hasClass('active')) {
$('li.menu-item-has-children a').removeClass('active');
}
else {
$(this).addClass('active');
}
$(this).next('ul').slideToggle();
$(this).parent().siblings().children().next().slideUp();
return false;
});
});
Update - создали быстрый JSFiddle, который демонстрирует проблему, извинение за не делать на открытие вопроса. Вы можете видеть, что если один и тот же элемент нажат, чтобы переключиться, состояние остается активным.
Можем ли мы также видим соответствующий HTML ? Помогает узнать структуру обрабатываемых элементов. –
Удалите 'else' из вашего условия. Если ваш якорный тег активен в классе, он не будет устанавливать новый класс. В основном вы говорите: если какие-либо анкеры имеют активное имя класса, удалите его. Если у неявных тегов имя класса активно, установите его. – NewToJS
Было бы намного проще, если бы у вас был HTML-код с вашим JavaScript. Может быть, вы могли бы создать пример в [js-fiddle] (http://jsfiddle.net/), который иллюстрирует вашу проблему? –