Поэтому я пытаюсь определить, есть ли у одного из моих навигационных элементов определенный класс при нажатии, и если он действительно удаляет его, а если нет, то добавляет его.
Методология, стоящая за этим, заключается в отображении активного состояния на раскрывающейся кнопке, когда раскрывающийся список открыт. И потерять это состояние после того, как будет щелкнуть другой навигационный элемент или что-то вне выпадающего меню. Эта логика c в настоящее время работает нормально.
Однако другой случай, который у меня есть, - это потерять активное состояние, если была нажата та же кнопка, это в настоящее время не работает. Первое условие в операторе if никогда не выполняется, поэтому класс всегда переключается.
JS:
$(document).ready(function () {
//WORKS
$(document).click(function () {
$('.link.activeLink').removeClass('activeLink')
});
//WORKS
$('.nav-link').click(function () {
$('.link.activeLink').removeClass('activeLink')
});
//FAILS
$('.link').click(function () {
if ($(this).hasClass('activeLink')) {
$(this).removeClass('activeLink');
}
else {
$(this).toggleClass('activeLink');
}
});
});
css:
.activeLink {
background-color: #31A7DF;
}
HTML:
<a class="nav-link link dropdown-toggle text-white paddingRightButton h-100 noPaddingRightLeft" href="#" data-toggle="dropdown" id="flatRoofingDropdown" role="button" aria-haspopup="true" aria-expanded="false">
Flat Roofing
</a>