2016-05-24 40 views
0

我根本沒有JS經驗。我搜索了一個編碼這個菜單的方法,我實際上設法使用一個小CSS。但是,當用戶單擊關閉按鈕時,菜單纔會關閉。如果用戶點擊菜單中的鏈接或頁面中的任何其他位置,菜單將保持打開狀態。我想出了這個代碼是這一個:JS用來隱藏菜單,當用戶點擊一個鏈接或頁面中的任何其他地方

<script> 
 
var theMenu; 
 
var originTop; 
 
    
 
window.onload = function() { 
 
    //Click to open the submenu 
 
    element = document.getElementById("buttonu101541"); 
 
    element.onclick = openMenu; 
 
    
 
    //Top position 
 
    originTop = document.getElementById("buttonu100976").style.top; 
 
    //Get the Menu element 
 
    theMenu = document.getElementById("buttonu100976"); 
 
    
 
    //Close button 
 
    closeBtn = document.getElementById("buttonu101584"); 
 
    closeBtn.onclick = closeMenu; 
 
} 
 
    
 
function openMenu(){ 
 
    theMenu.style.top = 0; 
 
} 
 
    
 
function closeMenu(){ 
 
    theMenu.style.top = originTop; 
 
} 
 
</script>
<style> 
 
    #buttonu100976{ 
 
    
 
     transition-property: top; 
 
     transition-duration: 1s; 
 
     transition-timing-function: ease; 
 
    
 
     -webkit-transition-property: top; 
 
     -webkit-transition-duration: 1s; 
 
     -webkit-transition-timing-function: ease; 
 
    } 
 

 
    #buttonu101541{ 
 
     cursor: pointer; 
 
     cursor: hand; 
 
    } 
 

 
    #buttonu101584{ 
 
     cursor: pointer; 
 
     cursor: hand; 
 
    } 
 
</style>

老實說,我不知道如何通過這一點。我感謝任何幫助。謝謝。

+0

可以請你創建一個演示/你可以使用的jsfiddle或plunker – brk

+0

這可能會幫助他人提供,如果你的答案說什麼「繼續前進」。即你期望得到什麼結果?我假設你期望菜單在點擊鏈接時消失。這是一個正確的假設嗎? – MikeT

+0

嗨。謝謝你的回覆,我很抱歉拖延。我是新來的這種論壇。我甚至不知道你們回答。以爲我會收到通知郵件。 :( user2181397你是什麼意思?如果你想看看我想要做什麼,請查看www.adielrios.com,將鼠標懸停在右上角的菜單圖標上,將鼠標懸停在「saúdemental 「然後點擊」outros transtornos「。這就是JS觸發器。 MikeT,你的假設是精確的:這正是我想要的!:) –

回答

0

您可以通過

  1. 實現它創建一個變量,它標誌菜單的狀態。如果菜單打開它設置爲true其他false。讓默認狀態是false
  2. 添加eventListenerdocument.body &檢查標誌,如果是真通話closeMenu功能(我認爲這是工作)&然後設置標誌設置爲false ;

你可以看一下這個片段

var _isMenuOpen = false; //Create a variable to point the state of the menu 

function openMenu(){ 
    theMenu.style.top = 0; 
    isMenuOpen = true; // When menu is open set it to true 
} 

document.body.addEventListener('click',function(event){ 
if(_isMenuOpen ===true){ //Check if menu is open 
    closeMenu(); //call close menu function 
    _isMenuOpen = false // set it ti false state 
} 
}) 

希望這將是有用的

+0

Hi @ user2181397。我真的很感激你的意見。說實話,我真的不明白你的意思,但是如果你能告訴我在哪裏我必須把它放在我提供的代碼中,那將會很棒。或者,也許我必須把它放在之間的任何地方?: -/ –

0

這個如何:

$(document).mouseup(function (e) 
{ 
    var container = $(".menu ul"); 

    if (!container.is(e.target) 
     && container.has(e.target).length === 0) 
    { 
     container.hide(); 
    } 
}); 

$('a').click(function() { 
    $(this).next('ul').show(); 
}); 

$('.menu ul li').click(function() { 
    $(this).parent('ul').stop(true, true).hide(); 
}); 

<div class="menu"> 
    <a>Show Menu</a> 
    <ul> 
     <li>link</li> 
    </ul> 
</div> 

更新:

<html> 
<head></head> 
    <body> 
    <div id="buttonu100976"> 
     <a>link</a> 
    </div> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
<script> 
     $(document).mouseup(function (e) 
     { 
      var container = $("#buttonu100976"); 

      if (!container.is(e.target) 
       && container.has(e.target).length === 0) 
      { 
       container.slideUp(); 
      } 
     }); 

     $('#buttonu100976 a').click(function() { 
      $('#buttonu100976').stop(true, true).slideUp(); 
     }); 

    </script> 
    </body> 
</html> 
+0

https://jsfiddle.net/46Lttafk/1/ –

+0

Hello @wim。我很感激你的迴應,我很抱歉花了我很長時間纔看到它。我沒有收到通知郵件,所以我認爲沒有人回覆。老實說,我並不真正瞭解你說的話。我應該在我的項目中用對象引用提供的代碼替換任何代碼嗎? 如果你能告訴我我必須在你提供的代碼中放置你的代碼的位置,那將是如此非常友善。或者,也許我必須把它放在之間的任何地方? : -/ 感謝您的幫助。 –

+0

@AdrianoMarques沒問題。首先,您將javascript放置在中的

  • 11. iPad jQuery菜單,點擊外面的任何地方以隱藏下拉菜單
  • 12. 如何隱藏頁面上任何地方點擊下拉菜單
  • 13. 如何隱藏子菜單時其他菜單點擊JQuery的
  • 14. jquery顯示隱藏顯示當點擊其他可見頁面鏈接
  • 15. 隱藏一個元素,當我點擊它的外部或頁面上的其他地方
  • 16. 當點擊鏈接時隱藏其他div與jquery顯示一個div當我點擊鏈接
  • 17. 當用戶點擊一個鏈接時隱藏/顯示錶單的元素
  • 18. 打開一個下拉菜單,點擊頁面上的其他地方
  • 19. 有沒有更好的方式來隱藏菜單,當用戶點擊它?
  • 20. 當其中一個菜單項被點擊時禁用其他菜單項c#
  • 21. jquery當表單被點擊時隱藏頁面上的其他表單
  • 22. 如何在用戶點擊其他地方時使用jquery隱藏ul
  • 23. 如何隱藏鏈接/點擊來源?
  • 24. 如何隱藏輸入字段每當點擊任何其他角js
  • 25. 單擊一個地點,註冊爲其他地方的點擊
  • 26. 粘滯菜單 - 隱藏某些頁面,但不隱藏其他頁面
  • 27. 點擊開關ul - 在其他地方點擊隱藏ul
  • 28. 點擊鏈接後禁用菜單隱藏
  • 29. 當點擊頁面上的其他任何地方時,使下拉菜單恢復正常
  • 30. 當點擊屏幕上其他任何地方時,菜單不會關閉