jQuery,如果函数重复

时间:2015-02-18 15:24:07

标签: jquery if-statement

我有一个菜单列表,其中一些菜单项也有子菜单,具有以下结构:

<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语句两次,即不打开子菜单,而是打开,然后立即再次关闭子菜单。

我将非常感激地提出任何有关我可以开始寻找原因的建议。谢谢。

1 个答案:

答案 0 :(得分:0)

将此作为评论发布,但我现在无法发布。您是否尝试过使用$(selector).on('click',function(e){})代替$(selector).click(function(e){})?结果是什么?

$(selector).on('click', function(e){ //code to be executed; });