2011-12-29 162 views
0

好吧,我有这个下拉菜单脚本。当所有的点击发生在菜单本身,但当我点击菜单下拉菜单不关闭时,它工作正常。如果用户在屏幕上某个不是实际菜单的地方点击,我希望菜单关闭。document.onclick关闭,但点击菜单时保持打开

我曾尝试添加代码:

document.onclick = ddMenu_close; 

但随后这使得菜单从来没有打开,因为它是调用“打开”,通过功能,但再关闭它,马上,因为它然后调用的onclick ddMenu_close。我的脚本如下:

<script type="text/javascript"> 
    function ddMenu() { 
    var timeout = 500; 
    var closetimer = 0; 
    var ddmenuitem = 0; 

    function ddMenu_open(e) 
    { 
     ddMenu_close(); 
     var submenu = $(this).find('ul'); 
     if(submenu){ 
      ddmenuitem = submenu.css('visibility', 'visible'); 

     } 

    } 

    function ddMenu_close() 
    { if(ddmenuitem) ddmenuitem.css('visibility', 'hidden'); } 

    function ddMenu_timer() 
    { closetimer = window.setTimeout(ddMenu_close, timeout); } 

    function ddMenu_canceltimer() 
    { if(closetimer) 
     { window.clearTimeout(closetimer); 
      closetimer = null;}} 

    $(document).ready(function() 
    { $('#ddMenu > li').bind('click', ddMenu_open); 
     $('#ddMenu li ul').bind('click', ddMenu_timer); 


    }); 


    } 
    </script> 

所以我需要的东西添加到这个脚本,将下关闭下拉被点击的ducument或窗口时,但不能干扰与菜单或下拉的点击。感谢您的任何帮助。

回答

1

在用于$(document)绑定的ddMenu_open()事件中触发ddMenu_close()。 在ddMenu_close()取消$(文档)的点击事件。

这是例子:

http://jsfiddle.net/bEPvP/

+0

这是非常接近我所期待的。只要我不添加实际的'il'链接,它就可以正常工作。一旦我添加实际'''链接到'il'链接不起作用。我认为这是由于返回错误。你可以检查jsfiddle,看看你是否可以得到一个实际的链接工作。现在你有没有链接的ul/il。谢谢。 – user982853

+0

请将'return false;'改为'e.stopPropagation();'[http://jsfiddle.net/bEPvP/4/](http://jsfiddle.net/bEPvP/4/)Jsfiddle不能使用链接跳转,请举例说明本地操作 –

相关问题