html:
<div class="h-r-bot"><div class="h-nav"><ul><li>aaa</li></ul></div><div>
<div class="h-nav-main">bbb</div>
js:
$(document).ready(function(){
                    $(".h-r-bot .h-nav li").hover(
                        function()
                        {
                            $(this).addClass("hover").siblings().removeClass("hover");
                            $(".h-nav-main div.ma").stop().slideDown("normal").animate({height:"50px"});
                        },
                        function()
                        {
                            var b = 0;
                            var li = this;
                            $(".h-nav-main").hover(
                                function(){b = 1},
                                function(){
                                    $(li).removeClass("hover");
                                    $(".h-nav-main div.ma").stop().slideUp("normal");
                                }
                            );
                            if(b == 0)
                            {
                                $(li).removeClass("hover");
                                $(".h-nav-main div.ma").stop().slideUp("normal");
                            }                        }
                    );
                    
                });Bug:
当鼠标移到文字aaa时显示bbb,但是当鼠标移走aa而不移到bbb上面时,bbb还会显示,
怎么让上面的情况 隐藏bbb呢。
我上面的js代码  var b 是我后来想到的,但是还是有问题,
上面的代码问题就是  b总等于0, 不知道大虾们能看懂不?
求解 困扰一段时间了,
要是这个思路不行,有别的案例不??jquery嵌套 hover

解决方案 »

  1.   

    呃。
    我的意思是
    function()
                             {
                                 var b = 0;
                                 var li = this;
                                 $(".h-nav-main").hover(
                                     function(){b = 1},
                                     function(){
                                         $(li).removeClass("hover");
                                         $(".h-nav-main div.ma").stop().slideUp("normal");
                                     }
                                 );
                                 if(b == 0)
                                 {
                                     $(li).removeClass("hover");
                                     $(".h-nav-main div.ma").stop().slideUp("normal");
                                 }
     这段代码有问题
      

  2.   

    将var b=0 设置全局变量试试
      

  3.   

    不行的 测试了问题应该是执行顺序问题
    先执行了
     if(b == 0)
    {
    $(li).removeClass("hover");
    $(".h-nav-main div.ma").stop().slideUp("normal");
    }
    然后才执行的
    $(".h-nav-main").hover(
    function(){b = 1},
    function(){$(li).removeClass("hover");
    $(".h-nav-main div.ma").stop().slideUp("normal");}
    );
                                 
      

  4.   

    能判断 鼠标在离开 aaa 的时候 是否移到了bbb上了吗?
      

  5.   

    你是不是想要这种效果:<script type="text/javascript">
    $(document).ready(function(){
    $(".h-r-bot .h-nav li").hover(function(){
    $(this).addClass("hover").siblings().removeClass("hover");
    $(".h-nav-main div.ma").stop().slideDown("normal").animate({height:"50px"});
    });
    var b=0;
    $(".h-nav-main div.ma").hover(function(){
    b=1;
    },function(){
    $("li.hover").removeClass("hover");
    $(".h-nav-main div.ma").stop().slideUp("normal");
    });
    if(b == 0)
                {
    $("li.hover").removeClass("hover");
                    $(".h-nav-main div.ma").stop().slideUp("normal");
                } });            </script>
      

  6.   

    是不是上来先判断b==0收起$(".h-nav-main div.ma"),然后hover li时展开$(".h-nav-main div.ma"),hover $(".h-nav-main div.ma")时再收起。
      

  7.   

    加个时间延迟。setTimeout如下:$(document).ready(function(){
                $(".h-r-bot .h-nav li").hover(
                        function()
                        {
                            $(this).addClass("hover").siblings().removeClass("hover");
                            $(".h-nav-main div.ma").stop().slideDown("normal").animate({height:"50px"});
                        },
                        function()
                        {
                            var b = 0;
                            var li = this;
                            $(".h-nav-main").hover(
                                    function(){b = 1},
                                    function(){
                                        $(li).removeClass("hover");
                                        $(".h-nav-main div.ma").stop().slideUp("normal");
                                    }
                            );                        setTimeout(function(){
                                if(b == 0)
                                {
                                    $(li).removeClass("hover");
                                    $(".h-nav-main div.ma").stop().slideUp("normal");
                                }
                            },10)
                        }
                );        });