html结构:<ul class="nav">
<li onmouseover="show('1')" onmouseout="hide('1',event)"><a>JquerySchool</a>
<ul class="sub-nav" id="1" >
<li><a href="http://sc.chinaz.com/">Jquery插件</a></li>
<li><a href="http://sc.chinaz.com/">Jquery学堂</a></li>
<li><a href="http://sc.chinaz.com/">学习资料库</a></li>
<li><a href="http://sc.chinaz.com/">QQ群堂</a></li>
<li><a href="http://sc.chinaz.com/">TAGS标签</a></li>
<li><a href="http://sc.chinaz.com/">在线留言</a></li>
</ul>
</li>
</ul>js的代码:function hide(id,e){
e.stopPropagation();
e.preventDefault();
 var content=document.getElementById(id);
// content.style.display = "none";
 document.getElementById("tip").innerHTML += "fire";
 //alert("fire");
 
 var selfHeight=content.offsetHeight;
 content.style.overflow = "hidden";
 var timer=setInterval(function(){
selfHeight--;
   content.style.height = selfHeight + "px";
   if(selfHeight <= 0){
clearInterval(timer);
content.style.display = "none";
content.style.height =252+"px"; //当元素隐藏以后,恢复初始高度
}
},1);
}我想实现当鼠标离开一级导航时动画隐藏二级菜单,但是现在效果是我鼠标放到二级菜单上时也开始隐藏,求高手指点js二级导航mouseout

解决方案 »

  1.   

    var timer=setInterval 的timer改成 全局变量
    在 show 方法加 清一下 timer 
      

  2.   

    但是现在效果是我鼠标放到二级菜单上时也开始隐藏,求高手指点
    re
    哪你应该贴show函数呀
      

  3.   

    从<li>JquerySchool</li>移动到二级菜单时候,会触发事件 mouseout 和 mouseover。如果你是直接隐藏倒还好,不过你是 setInterval;在show方法中取消掉setInterval 即可;
    var timer;//全局变量
    hide方法中: timer = setInterval(...
    show方法中: clearInterval(timer);