求一个javascript的简单效果:网上页头上的栏目,当鼠标放在某个栏目上时,下方弹出多个选项卡。我网站上的问题是,鼠标上去,下方弹出选项卡了,但是当鼠标想选择下方的选项卡的时候,有时候直接又缩进去了,选不到。求源码,谢谢各位了。

解决方案 »

  1.   

    在栏目标签的onmouseout事件里加上setTimeout方法,就是多长时间后选项卡才缩进去,然后在选项卡的onmouseover事件里面加上取消setTimeout的方法。
      

  2.   

    参考一下:
            //当鼠标移出时,隐藏选项卡
            $("#main").mouseout(function(event){
              var e = window.event || event;  
              var s = e.toElement || e.relatedTarget;     
              if(document.all){     
                  if( !this.contains(s) ){     
                     //隐藏选项卡的代码
                  }     
                  }else{     
                     var res= this.compareDocumentPosition(s) ;       
                     if( ! ( res == 20 || res == 0) ){        
                       //隐藏选项卡的代码
                   }       
                }
            });
      

  3.   

    呵呵,这事听上去就觉得有点搞笑的色彩。这是因为你鼠标想选择下方选项卡时离开了上方,而在上方的onmouseout事件里你又正好是关闭下方选项卡的。如果只纠结于此而跳不出来,就跟永远追逐自己尾巴的小猫一样了。其实要解决,很容易的,在你下方的选择卡上加上onmouseover事件,显示它本身,就行了。这样,鼠标从上方移入下方,又执行下方的事件了。但是位置摆放就有关系了,下方的应该紧挨上方,或者和上方重合一线两线的,否则如果稍有距离,则没等鼠标进入下方,就已经执行上方的离开事件了(如果你下方原已加入“进入”事件了,就可能是这个原因)。或者也可以给离开加一个很短暂的延时,比如500(半秒钟),但这样还要设置一个中断开关,详情可见我以前解答这种问题的帖子http://topic.csdn.net/u/20110129/14/62a55798-d3b7-4563-98ae-16ebda3e45a5.html。另一个方法是,把上方的鼠标离开事件取消,就是说,只管显示下方,不关闭。然后给上方的上方设置鼠标进入事件,关闭下方的下方。同样,也给下方的下方的下方设置鼠标进入,关闭该关的那一方。呵呵,说来乱,想想就明白了。
      

  4.   

    最简单的实现就是
    css伪类
    去查阅下这个主题
      

  5.   

    这个我上次做腾讯SOSO的测试页面的时候有这个东西,具体的思路就是,给栏目设置mouseover事件,触发后,给栏目设置mousemove事件,一直监听鼠标坐标,若鼠标坐标在栏目与子菜单组合的宽度和高度内,那么菜单就一直显示。离开了则隐藏子菜单,并移除mousemove事件。 这个前提是子菜单作为栏目的一个子节点存在。
      

  6.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
      <style>
    div{
    cursor:default;
    }
      </style>
      <script type="text/javascript">
      <!--
    function showDiv(obj){
    var divs = obj.children;
    for(var i=0;i<divs.length;i++){
    var div = divs[i];
    if(div.id != 'menu'){
    if(div.style.display == 'none'){
    div.style.display = "block";
    }else{
    div.style.display = "none";
    }
    }
    }
    }
      //-->
      </script>
     </head> <body>
    <div style="background-color:#cfcfcf;width:80px" onmouseover="showDiv(this)" onmouseout="showDiv(this)">
    <div id="menu">文件</div>
    <div style="display:none;">新建</div>
    <div style="display:none;">打开</div>
    </div>
     </body>
    </html>这样符合你的要求吗?