2
我有一個菜單,工作很好,除了我無法打開點擊使用JQuery的事實。這在懸停時工作正常,但我也希望點擊手機和平板電腦時可以打開菜單。我可能做了一些愚蠢的事情,但無法弄清楚問題所在。我重視工作的例子和下面的小提琴:展開導航菜單點擊
https://jsfiddle.net/qby38c3o/6/
HTML:
<div class="nav">
<div class ="navWrapper">
<nav role="navigation" class="menu">
<ul class="navList">
<li><a href="#">NavMenu1</a></li>
<li><a href="#">NavMenu2</a></li>
<li>
<a href="#">NavMenu4</a>
<ul class="submenu">
<li><a href="#">Sub1</a></li>
<li><a href="#">Sub2</a></li>
<li><a href="#">Sub3</a></li>
<li><a href="#">Sub4</a>
<ul class="subSubmenu">
<li><a href="#">SubSub1</a></li>
<li><a href="#">SubSub2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
CSS:
.nav
{
background-color: blue;
z-index: 1;
}
.navWrapper
{
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
flex-direction: column;
flex-grow: 1;
max-width: 1366px;
width:100%;
margin:auto;
}
/*HORIZONTAL MENU*/
.menu
{
flex-grow: 1;
width: 100%;
}
.menu ul.navList
{
display:flex;
width: 100%;
flex-direction: row;
flex-wrap: wrap;
position: static;
}
.menu ul li
{
position: relative;
}
.menu > ul > li > a
{
text-align: left;
display:block;
color: white;
padding:16px 16px 12px 16px;
border-bottom:4px solid transparent; /*To offset white underline hover*/
font-weight: 700;
}
.menu > ul > li a:hover
{
background-color: red;
border-bottom: 4px solid #F1F227;
color: white;
transition: 1s ease-out;
}
/*Sub Menu*/
.menu > ul > li:hover > ul
{
display: block;
}
.submenu
{
display:none;
position:absolute;
background-color: blue;
white-space: nowrap;
min-width : 100%;
list-style-type: none;
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.4);
}
.submenu > li > a
{
text-align: left;
display:block;
color: #fff;
padding:16px 16px 12px 26px;
border-bottom:4px solid transparent; /*To offset white underline hover*/
font-weight: 500;
}
.submenu > li:hover > a
{
background-color: #062c6b;
color: #FFDB00;
border-bottom: 4px solid #F1F227;
transition: 1s ease-out;
}
/*Child Sub Menu*/
.menu > ul > li > ul > li:hover > ul
{
display: block;
}
.subSubmenu
{
display:none;
position:absolute;
background-color: blue;
white-space: nowrap;
min-width: 100%;
list-style-type: none;
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.4);
left: 100%;
top: 0;
bottom:auto;
}
.subSubmenu > li > a
{
text-align: left;
display:block;
color: #fff;
padding:19px 16px 12px 36px;
border-bottom:4px solid transparent; /*To offset white underline hover*/
font-weight: 300;
}
.menu > ul > li > ul > li:hover > ul > li:hover > a
{
background-color: red;
color: #C5EFF7;
border-bottom: 4px solid #F1F227;
transition: 1s ease-out;
}
JQuery的:
jQuery(document).ready(function() {
clickNav();
activeNav()
function activeNav(e) {
var url = window.location.href;
$(".menu ul li a").each(function() {
if (url == (this.href)) {
$(this).closest("li").addClass("active");
}
});
e.preventDefault();
}
function clickNav(e) {
var submenu = $(this).children('.submenu');
$('.menu ul .submenu').parent().click(function() {
if ($(submenu).is(':hidden')) {
$(submenu).slideDown(200);
} else {
$(submenu).slideUp(200);
}
});
e.preventDefault();
}
});
感謝您的答覆Niffler,但我有一些問題。我可以在你的小提琴中看到這個工作正常。但是我已經在我的代碼中嘗試了這一點,並且它不工作。因此,我因此嘗試改變我的小提琴,但它仍然不工作。我甚至完全創建了一個新的小提琴,並簡單地複製了所有的代碼,它不會工作,這是沒有道理的。 – Damo
你有沒有在你的小提琴中包含jQuery?它在「Javascript」>「框架和擴展」下。我添加了一個截圖(見上文)。 – Niffler
感謝您的答覆Nifler。我遇到了另一個功能問題(activeNav),它顯示了菜單上的活動頁面,這不適用於你的功能。我已經計算出,如果我從我的activeNav函數中刪除e.preventDefault()和e,那麼所有函數都可以正常工作,這看起來合適嗎?我已經將這個函數添加到上面的JQuery中。此外,我發現您的功能,子菜單不會打開點擊和2菜單可以同時打開,即如果我打開一個又一個第一個保持打開狀態。 – Damo