JQuery Click Function,Jquery Toggle Issue

时间:2014-03-08 16:47:43

标签: jquery click slidetoggle submenu

jQuery('.query-links ul').click(function() {

    if (jQuery('.child-posts').length == 1) {
        jQuery('.child-posts').slideToggle(200);
    }

    else {
        jQuery('.child-posts.opened').slideToggle(200).removeClass('opened');
        jQuery(this).closest('ul').find('.child-posts').slideToggle(200).addClass('opened');
    }

    return false; 
});

以下是Fiddle

我有这个运行侧边栏菜单的JQuery代码,一切都运行良好,但是当子菜单打开时,如果单击它没有关闭,它会再次打开。如果菜单在打开时点击它,我希望菜单关闭。任何帮助将不胜感激,谢谢。 - 杰森

更新:代码的第一部分处理的菜单实例只有一个.child-posts DIV。根据附加到各自类别的POSTS,菜单是不同的。 (WordPress的)

1 个答案:

答案 0 :(得分:0)

您需要定位所点击的.childpost下的当前ul

if (jQuery(this).find('.child-posts').length == 1) {
    jQuery(this).find('.child-posts').slideToggle(200);
}

<强> Updated Fiddle


编辑:您可以将代码缩短为:

jQuery(document).ready(function($){
    $('.query-links ul').click(function() {
        var childPost = $(this).find('.child-posts');
        $('.child-posts').not(childPost).slideUp().removeClass('opened'); 
        childPost.addClass('opened').slideToggle();
    }); 
});

<强> Updated Fiddle