2011-12-29 156 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不能使用鏈接跳轉,請舉例說明本地操作 –

相關問題