не могу удалить класс из пункта меню

#javascript #jquery

Вопрос:

У меня есть выпадающее меню. На некоторых страницах ссылка просто прокручивается до привязки вместо обновления страницы. Когда это произойдет, выпадающее меню должно закрыться. Но это не так.

Это мой html

 lt;div class="navbar"gt;  lt;div class="nav_item"gt;  lt;div class="dropdown menu_item" gt;  lt;span class="navbar-submenu"gt; lt;a href="/"gt;dropdownlt;/agt;lt;/spangt;  lt;div class="secondarynav" gt;  lt;div class="nav_item"gt;  lt;div class="menu_item" gt;  lt;a href="/#"gt;linklt;/agt;  lt;/divgt;  lt;/divgt;  lt;div class="nav_item"gt;  lt;div class="menu_item" gt;  lt;a href="/#"gt;linklt;/agt;  lt;/divgt;  lt;/divgt;  lt;/divgt;   lt;/divgt;  lt;/divgt;  lt;div class="nav_item"gt;  lt;div class="menu_item" gt;  lt;a href="/"gt;linklt;/agt;  lt;/divgt;  lt;/divgt; lt;/divgt;  

Что должно произойти, когда посетитель нажимает на выпадающий список, активный класс добавляется в родительский элемент nav_item, который затем отображает остальную часть меню. Когда пользователь снова нажимает раскрывающийся список, активный удаляется, а раскрывающийся список закрывается.

 $('.dropdown').click(function (e) {  $(this).closest('.nav_item').toggleClass('active'); });  

Теперь проблема в том, что когда посетитель нажимает раскрывающийся список, то любая из дочерних ссылок, по которой я хотел бы удалить активный класс, в настоящее время происходит только при нажатии на раскрывающуюся ссылку.

Я пробовал различные другие методы

 $('.nav_item.active gt; *').click(function(e) {  $(this).closest('.active').removeClass('active'); });  

Но это приводит к сбоям с функцией переключения в другом scipt. В основном активное добавляется, а затем сразу удаляется.

Как я могу установить это так, когда .щелкается раскрывающийся список .активный добавляется в родительский элемент nav_item. Но тогда, если щелкнуть по какой-либо ссылке в этом меню,. active будет удален? Спасибо

Ответ №1:

Используйте e.stopPropagation() для предотвращения появления события на элементе в раскрывающемся списке.

 $('.nav_item.active gt; *').click(function(e) {  e.stopPropagation();  $(this).closest('.active').removeClass('active'); });  

Комментарии:

1. спасибо, но это совсем не сработало