У меня есть список меню, где некоторые пункты меню также есть подменит, со следующей структурой:JQuery, если функция повторяется
<div>
<ul class="mobile-menu">
<li class="menu-item"><a href=..></a></li> // menu item without sub-menu
<li class="menu-item-has-children"> //menu item with sub-menu
<a href=...</a> //link attached to parent menu item
<ul class="sub-menu">
<li ><a href=...</a></li>
<li ><a href=...</a></li>
</ul>
</li>
</ul>
</div>
я написал код для события, связь, прикрепленной к меню элемент с дочерним элементом. Внутри это оператор if, который говорит, что если элемент списка уже отмечен как открытый, затем закройте (slideUp) подменю и удалите открытый маркер, иначе откройте (slideDown) подменю и добавьте открытый маркер.
По умолчанию все подменю изначально закрыты и не имеют открытого маркера. Когда я нажимаю на элемент родительского меню, подменю открывается, а затем снова закрывается. Я прошел через него в Firebug, и код буквально запущен в инструкции if, а в конце инструкции else он возвращается к началу и выполняет оператор if во второй раз перед остановкой. Я попытался добавить «return false»; но они не имеют никакого значения.
jQuery("li.menu-item-has-children > a").click(function(event){
event.preventDefault();
if(jQuery(this).parent().hasClass("open")){
jQuery(this).next("ul").slideUp(100);
jQuery(this).parent().removeClass("open");
return false;
} else {
jQuery(this).next("ul").slideDown(100);
jQuery(this).parent().addClass("open");
return false;
}
return false;
});
Я не понимаю?!? Любая помощь будет с благодарностью получена. Спасибо!
Ronel
Edit: Так что я получил его функционирование в jsfiddle (https://jsfiddle.net/ronelz/hvy9wxy9/12/) и код отлично работает ?! Однако на самом веб-сайте он запускает оператор if дважды, то есть вместо открытия подменю он открывается, а затем снова закрывает подменю снова.
Любые предложения о том, где я могу начать искать причину, будут с благодарностью получены. Спасибо.
вы можете добавить CSS, поэтому он может быть добавлен к скрипке? .n.b вам не нужно 'return', событие click не возвращает значение – atmd
Pls, укажите jsfiddle и скажите, что должно произойти! –
Удалить все 'return false;' Just have' event.preventDefault(); 'Каков результат? –