我有一个菜单列表,其中一些菜单项也有子菜单,具有以下结构:
<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
编辑: 所以我在jsfiddle(https://jsfiddle.net/ronelz/hvy9wxy9/12/)中运行它并且代码完美无缺?但是在实际网站上它会运行if语句两次,即不打开子菜单,而是打开,然后立即再次关闭子菜单。
我将非常感激地提出任何有关我可以开始寻找原因的建议。谢谢。
答案 0 :(得分:0)
将此作为评论发布,但我现在无法发布。您是否尝试过使用$(selector).on('click',function(e){})
代替$(selector).click(function(e){})
?结果是什么?
$(selector).on('click', function(e){
//code to be executed;
});