2016-10-10 1 views
1

현재 ASP.NET 응용 프로그램에서 부트 스트랩 메뉴를 작업 중입니다. 이를 위해, 나 자신에 의해 네비게이션 바에을했고, 내가 버튼을 클릭하면, 그와 같은 메뉴를 보여줍니다 : 내가 원한과 (모든 코드가 나중에있을 것입니다) 잘 작동부트 스트랩 닫기 메인 드롭 다운에서 서브 드롭 다운

enter image description here

합니다. 그런 다음 두 번째 선택 항목 인 "Fiche"를 클릭하면 나타나는 하위 메뉴를 만들고 싶습니다. 그래서 몇 가지 조사 후, 나는이 같은 부트 스트랩 네비게이션 바 함께 할 수있는 것을 발견 :

enter image description here

내가 원하는 거의 무슨 그! (보기 흉한 것을 제외하고 나는 그것을 더 잘 보이게하는 방법을 모른다. 그러나 그것은 또 다른 문제이다.) 그러나 그 다음 내가 원하는 것은 나의 메뉴보다 다른 곳을 클릭 할 때 모든 메뉴가 사라지고 그 때 다시 열려면 클릭하십시오. 이전에 여는 하위 메뉴는 다시 표시되지 않습니다 (기본적으로 모든 항목을 닫으려고합니다).

이 부분은 작동하지 않습니다. 왜냐하면 처음에는 닫히기 때문입니다. 어딘가를 클릭해도 하위 메뉴가 닫히지 않고 어떻게 올바르게 수행 할 수 있는지 모르겠지만 이미 사용하려고했습니다. .attr을 수동으로 제거하고 부트 스트랩 속성을 제거하려고 시도하지만 좋은 방법이 아닙니다. 따라서 서브 메뉴 폐쇄를 제외하고는 대략적으로 작동하는 실제 코드를 게시 할 것입니다. (또한이 커뮤니티에 대해 매우 익숙합니다. 적절한 게시물을 작성하는 방법을 여전히 테스트하고 있으므로 충분한 정보를 넣었 으면합니다.) 스 니펫에서 아마 때문에 내 구성의 차이로 이어질 수 부트 스트랩의 호수, 작동하지 않는 것 :

function myFunction() { 
 
    document.getElementById("myDropdown").classList.toggle("show"); 
 
} 
 

 
// Close the dropdown menu if the user clicks outside of it 
 
window.onclick = function (event) { 
 
    if (!event.target.matches('.immune-nav-close')) { 
 
     var dropdowns = document.getElementsByClassName("dropdown-content"); 
 
     var i; 
 
     for (i = 0; i < dropdowns.length; i++) { 
 
      var openDropdown = dropdowns[i]; 
 
      if (openDropdown.classList.contains('show')) { 
 
       openDropdown.classList.remove('show'); 
 
      } 
 
     } 
 
    } 
 
}
.well 
 
{ 
 
    background-color: #219cdc !important; 
 
} 
 

 
.top-navbar 
 
{ 
 
\t background-color: #00448a; 
 
\t width: 100%; 
 
\t height: 60px; 
 
    padding-top: 15px; 
 
} 
 
\t \t \t \t 
 
.menu-btn 
 
{ 
 
\t margin-left: 2%; 
 
\t height: 75%; 
 
\t width: 40px; 
 
\t max-width: 40px; 
 
\t display: inline-block; 
 
} 
 
\t \t \t 
 
.span-menu 
 
{ 
 
\t width: 100%; 
 
\t height: 20%; 
 
\t margin-bottom:10%; 
 
\t background-color: white; 
 
\t border-radius: 5px; 
 
} 
 
\t \t \t 
 
.dropdown-content 
 
{ 
 
\t display: none; 
 
\t position: absolute; 
 
\t background-color: #219cdc; 
 
\t min-width: 160px; 
 
\t box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 
 
\t color: white; 
 
\t border-radius: 5px; 
 
\t top: 60px; 
 
    z-index: 1000 !important; 
 
} 
 
\t \t \t 
 
.dropdown-content a 
 
{ 
 
\t color: white; 
 
\t padding: 12px 16px; 
 
\t text-decoration: none; 
 
\t display: block; 
 
} 
 
\t \t \t 
 
.dropdown-content a:hover {color: black; background-color:white;} 
 
\t \t \t 
 
.show {display:block;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<nav class="top-navbar"> 
 
\t \t \t <a class="menu-btn immune-nav-close" href="javascript:void(0);" style="font-size:15px;" onclick="myFunction()"> 
 
\t \t \t \t <div class="span-menu immune-nav-close"></div> 
 
\t \t \t \t <div class="span-menu immune-nav-close"></div> 
 
\t \t \t \t <div class="span-menu immune-nav-close"></div> 
 
\t \t \t </a> 
 
\t \t \t <div id="myDropdown" class="dropdown-content"> 
 
\t \t \t \t <a href="/Default.aspx">Accueil</a> 
 
\t \t \t \t <a class="immune-nav-close" data-toggle="collapse" href="#collapseFiche" aria-expanded="false" aria-controls="collapseFiche"> 
 
        Fiches 
 
       </a> 
 
       <div class="collapse ddown-nav" id="collapseFiche"> 
 
        <div class="well"> 
 
         <a href="/SaisieFiche.aspx">Saisir une fiche</a> 
 
         <a href="/MyFiches.aspx">Mes fiches</a> 
 
        </div> 
 
       </div> 
 
\t \t \t \t <a href="/Approbation.aspx">Approbations</a> 
 
       <a href="/Validation.aspx">Validation RH</a> 
 
       <a class="immune-nav-close" data-toggle="collapse" href="#collapseExport" aria-expanded="false" aria-controls="collapseExport"> 
 
        Exportations 
 
       </a> 
 
       <div class="collapse ddown-nav" id="collapseExport"> 
 
        <div class="well"> 
 
         <a href="/Synthese.aspx">Synthèse</a> 
 
         <a href="/Monthly.aspx">Bilan Mensuel</a> 
 
         <a href="/Personnal.aspx">Bilan Personnel</a> 
 
        </div> 
 
       </div> 
 
       <a class="immune-nav-close" data-toggle="collapse" href="#collapseSetting" aria-expanded="false" aria-controls="collapseSetting"> 
 
        Configuration 
 
       </a> 
 
       <div class="collapse ddown-nav" id="collapseSetting"> 
 
        <div class="well"> 
 
         <a href="/Config_pays.aspx">Paramétrage Pays</a> 
 
         <a href="/Config_csp.aspx">Paramétrage Catégories Socio-Professionnelles</a> 
 
        </div> 
 
       </div> 
 
\t \t \t </div> 
 
     </nav>

자세한 정보가 필요한 경우 요청 무료 떨어졌다! 귀하의 도움에 미리 감사드립니다.

답변

0

사실 대답은 상당히 간단했지만 이전에는 몇 가지 사항이 필요했습니다.

먼저 JS 버전 문제가 있습니다. (원하는 요소에서 .collapse를 사용할 수 없기 때문에) 문제가 해결되었습니다.하지만 그 내용은 <div>에 적용되어야한다는 것을 이해했습니다. 붕괴와 훨씬 더 작동합니다!

window.onclick = function (event) { 
    if (!event.target.matches('.immune-nav-close')) { 
     var dropdowns = document.getElementsByClassName("dropdown-content"); 
     var i; 
     for (i = 0; i < dropdowns.length; i++) { 
      var openDropdown = dropdowns[i]; 
      if (openDropdown.classList.contains('show')) { 
       openDropdown.classList.remove('show'); 
      } 
     } 

     $('.ddown-nav').collapse('hide') 
    } 
} 
:

그래서 나는 단지로 내 자바 스크립트를 교체했다