Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的JQuery CSS菜单无法隐藏_Jquery_Html_Css - Fatal编程技术网

我的JQuery CSS菜单无法隐藏

我的JQuery CSS菜单无法隐藏,jquery,html,css,Jquery,Html,Css,我创建了一个简单的jQuery菜单,它在悬停时展开,除非用户将鼠标悬停在另一个菜单项上或单击页面中的其他位置,否则菜单项不会隐藏。当您使用菜单上的链接加载另一个页面时,该页面将打开并使菜单保持展开状态。我怎样才能解决这个问题?所有html和css都可以找到。我的jQuery代码在这里 $(document).ready(function(){ $("#header_nav > li ").addClass("leve

我创建了一个简单的jQuery菜单,它在悬停时展开,除非用户将鼠标悬停在另一个菜单项上或单击页面中的其他位置,否则菜单项不会隐藏。当您使用菜单上的链接加载另一个页面时,该页面将打开并使菜单保持展开状态。我怎样才能解决这个问题?所有html和css都可以找到。我的jQuery代码在这里

                $(document).ready(function(){

                    $("#header_nav > li ").addClass("level1");
                    $("#header_nav  > li > ul > li ").addClass("level2");
                    $("#header_nav  > li > ul > li > ul > li ").addClass("level3");

                    $(".level1").live("hover",function(){

                        $(".level1").removeClass("main_menu_hover");
                        $(this).addClass("main_menu_hover");


                        var numberofChildren = $(this).find("> ul").children().length;

                        if(numberofChildren != 0){
                            // Section 1
                            $(".level1").removeClass("active_main_menu");
                            $(this).addClass("active_main_menu");

                            // Section 2
                            $(".level1").find("ul").css("display","none");
                            $(this).find(" > ul").css("display","block");

                            // Section 3
                            $(".level2").removeClass("active_first_element");
                            $(".level2").removeClass("active_last_element");
                            $(".level2").removeClass("active_only_element");

                            // Section 4
                            if(numberofChildren == 1){
                                $(this).find("ul li:first").addClass("active_only_element");
                            }else{
                                $(this).find("ul li:first").addClass("active_first_element");
                                $(this).find("ul li:last-child").addClass("active_last_element");
                            }

                            // Section 5
                            $(".level2 a").removeClass("sub_active");
                            $(".level2").removeClass("menu_hover");


                        }else{
                            // Section 6
                            $(".level1").find("ul").css("display","none");
                            $(".level1").removeClass("active_main_menu");

                        }

                    });

                    $(".level2").find(".arrow-right").attr("href","javascript:void(0);");

                    $(".level2 > a").live("hover",function(e){
                        $("li").removeClass("menu_hover");
                        $(this).parent().addClass("menu_hover");
                        e.preventDefault();
                    });

                    $(".level2 a").live("click",function(){
                        $("li").removeClass("menu_hover");

                        if($(this).hasClass("sub_active")){
                            $(this).removeClass("sub_active");
                            $(".level2 > ul").slideUp();
                        }else{
                            $(".level2 ul").slideUp();
                            $(".level2 a").removeClass("sub_active");
                            $(this).addClass("sub_active");
                            $(this).parent().find("ul").slideDown();
                        }
                    });





                    $(".level3 a").live("hover",function(){
                        if(!($(this).parent().hasClass("accordian_element_hover"))){
                            $(this).parent().removeClass("level3").addClass("accordian_element_hover");
                        }
                    });
                    $(".accordian_element_hover a").live("hover",function(){
                        $(this).parent().addClass("level3").removeClass("accordian_element_hover");
                    });


                });

您可以尝试以下方法:

$(".level1").live("mouseover mouseout", function(event) {
    if (event.type == 'mouseover') {
            //Your old menu code
    } else {
        $(this).attr("class","level1");
        $(this).find("ul").hide();
    }
}); 

单击链接时,以下内容应隐藏所有菜单:

$('#mainmenucontainer a').click(function(){
    $(".level1").find("ul").css("display", "none");
    $(".level1").removeClass("active_main_menu");
});

你使用live有什么原因吗?如果只使用.hover(),则可以在out回调中隐藏它:.hover(hoverInCallback,hoverOutCallback);我认为,如果菜单代码是从ajax生成的,或者在html呈现后追加,那么“hover”方法可能不适用working@kennypu我是jquery新手,用hover进行了尝试,但没有达到预期效果。Tran菜单代码不是从ajax生成的。