2017-03-28 216 views
0

我在我的網站上有一個菜單按鈕(「showmenu」),點擊後會打開菜單div。我也有,如果用戶點擊它之外的關閉菜單代碼(我發現這裏)jquery點擊外部div來關閉,問題

// code to open/close menu 
$(document).ready(function() { 
    $('#showmenu').click(function() { 
      $('.menu').slideToggle("fast"); 
    }); 

// code for clicking outside menu to close 
$(document).mouseup(function (e) { 
    var container = $('.menu'); 
    if (!container.is(e.target) && container.has(e.target).length === 0) { 
     container.hide(); 
     } 
    }); 

}); 

此代碼給了我,雖然問題。我可以使用「showmenu」按鈕打開菜單,但我無法再次單擊該按鈕關閉它。我可以關閉菜單的唯一方法是點擊它。

有什麼建議嗎?

+0

而HTML是? – epascarello

回答

0

這條線:

container.has(e.target).length === 0 

正在檢查如果點擊目標不是容器元素的父。但是,通過檢查長度等於零,當您想檢查它是否爲true時,這將評估爲false,即,當您點擊其父母之一時隱藏容器。

此外,您需要更改

e.target 

$(e.target) 

把它當作一個jQuery對象。

行更改爲

container.has($(e.target)).length > 0 

,它應該工作!

+0

感謝您的回覆。我改變了這一點,雖然我可以打開和關閉菜單,但我無法在菜單外點擊關閉它。 – user961882

+0

看到我編輯的答覆。您還需要將e.target包裝到$()中以將其選爲jQuery對象 –