2009-07-25 101 views
0

我发现每个jQuery插件都是基于<li>元素来生成菜单项。jQuery自定义菜单

我有一个代表菜单按钮和另一<div id = "menubutton">元素,而不是相关的(曼宁是不是一个孩子),其中包含菜单项(混合的东西,图像等)<div id = "menucontent">。我想要第二个,当我点击按钮时出现隐藏的div。当我离开按钮或离开内容div时,它应该隐藏起来,以防我选择项目或在那里做东西。

现在,这是我到目前为止的代码,但clearTimeout的东西似乎并没有工作。任何帮助?指出一个插件来帮助我的工作也可以。

谢谢!

 var timer; 

     $('#menubutton').click(function() { 
      $('#menucontent').show(); 
     }); 

     $('#menubutton').mouseout(function() { 
      timer = setTimeout('$("#menucontent").hide()', 500); 
     }); 


     $('#menucontent').mouseover(function() { 
      clearTimeout(timer); 
     }).mouseout(function() { 
      setTimeout('$("#menucontent").hide()', 300); 
     }); 

编辑解决方案

我解决了使用hover insted的鼠标悬停/鼠标移开

+0

为什么你会使其工作离开按钮或内容div?如果你在两个边界之间卡住了,那么这会很烦人,而且狗屎开始无缘无故地消失。一个或另一个,不是两个。这个脚本是否在错误控制台中抛出任何错误? – Sneakyness 2009-07-25 18:17:25

+0

控制台上没有错误。顺便说一句,如果我一个菜单,不要越过它,只是去另一个按钮,它会保持打开状态。它只是标准菜单的工作方式,我认为 – pistacchio 2009-07-25 18:21:27

回答

0

试试这个问题:

$('#menubutton').click(function() { 
     $('#menucontent').show(); 
    }); 

    $('#menubutton').mouseout(function() { 
     $(this).data('myTimer', setTimeout('$("#menucontent").hide()', 500)); 
    }); 

    $('#menucontent').mouseover(function() { 
     clearTimeout($(this).data('myTimer')); 
    }).mouseout(function() { 
     setTimeout('$("#menucontent").hide()', 300); 
    });