单击另一个菜单项时如何切换菜单
Posted
技术标签:
【中文标题】单击另一个菜单项时如何切换菜单【英文标题】:How to toggle up menu when another menu item is clicked 【发布时间】:2018-07-01 15:56:29 【问题描述】:我正在使用 Genesis 框架开发我自己的子主题。使用我的主题,当您单击***菜单项时,子菜单会在菜单下水平打开。现在,要关闭它,您需要单击相同的菜单选项。如果您在第一个子菜单仍处于打开状态时单击另一个菜单项,则新的子菜单会出现在其上方,从而创建一个子菜单层。
我在这里查看了多个线程,并尝试按照其他人的建议使用e.stopPropagation();
。我确定我用错了,因为它不起作用。
下面是我正在使用的代码:
jQuery(document).ready(function()
jQuery(".nav-header-left .menu-item, .nav-header-right .menu-item").removeClass("menu-open");
jQuery(".nav-header-left .menu-item-has-children, .nav-header-right .menu-item-has-children")
.click( function( e )
jQuery(this).find( 'ul.sub-menu:first' ).slideToggle( function()
jQuery(this).parent().toggleClass("menu-open");
);
if ( e.target !== this )
return;
);
);
这是一个显示菜单功能的小提琴:https://jsfiddle.net/mve1mrcp/15/(已经更新了几次,让它看起来更好一点)
欢迎提出任何建议!
【问题讨论】:
如果您可以在 jsFiddle 中复制您的菜单或其中的一部分,或者为工作示例提供 html/css/js,这将帮助我们为您的问题找到合适的答案。 @AhmedMusallam 这是菜单的一部分:jsfiddle.net/mve1mrcp 【参考方案1】:这是您的小修复中的 JS/CSS/HTML
jQuery(document).ready(function()
jQuery(".nav-header-left .menu-item, .nav-header-right .menu-item").removeClass("menu-open");
jQuery(".nav-header-left .menu-item-has-children, .nav-header-right .menu-item-has-children")
.click(function(e)
var $menuItem = jQuery(this);
console.log($menuItem)
var $nav = $menuItem.closest('.nav-header-left, .nav-header-right'); // get the nav parent
var shouldClose = $menuItem.hasClass('menu-open');
var $openMenuItem = $('.menu-open').removeClass('menu-open'); // toggle all menu items to be closed
$openMenuItem.find('ul.sub-menu:first').hide(); // hide sub-menu
if(!shouldClose)
$menuItem.find('ul.sub-menu:first').slideToggle(function()
jQuery(this).parent().addClass("menu-open");
);
);
jQuery(document).click(function()
$('.menu-open').removeClass('menu-open');
)
);
.genesis-nav-menu .menu-item
display: inline-block;
text-align: left;
li
list-style-type: none;
nav
display: block;
.nav-header-left
background: #000;
.nav-header-left .genesis-nav-menu
text-align: left;
.genesis-nav-menu li a
color: #fff;
display: block;
padding: 22px;
text-transform: uppercase;
font-weight: bold;
font-size: 12px;
.nav-header-left .genesis-nav-menu li > .sub-menu
display: none;
top: 104px;
height: 100px;
background-color: #fff;
.genesis-nav-menu .sub-menu
left: -9999px;
opacity: 0;
position: absolute;
-webkit-transition: opacity .4s ease-in-out;
-moz-transition: opacity .4s ease-in-out;
-ms-transition: opacity .4s ease-in-out;
-o-transition: opacity .4s ease-in-out;
transition: opacity .4s ease-in-out;
width: 200px;
z-index: 99;
.nav-header-left .genesis-nav-menu li > .sub-menu
display: none;
top: 104px;
height: 100px;
background-color: #fff;
.nav-header-left .genesis-nav-menu > .menu-item-has-children:before
content: "\f347";
float: right;
font: normal 12px/1 'dashicons';
height: 16px;
padding: 15px 0px 0px 0px;
text-align: right;
z-index: 9999;
cursor: pointer;
color: #fff;
.nav-header-left .genesis-nav-menu .menu-open .sub-menu
border: none;
opacity: 1;
position: absolute;
left: 0;
-moz-transition: opacity .4s ease-in-out;
-ms-transition: opacity .4s ease-in-out;
-o-transition: opacity .4s ease-in-out;
-webkit-transition: opacity .4s ease-in-out;
transition: opacity .4s ease-in-out;
width: 100%;
z-index: 99;
.nav-header-left .genesis-nav-menu > li.menu-item-has-children > a
pointer-events: none;
.nav-header-left .genesis-nav-menu li > .sub-menu li
display: inline-block;
.site-header .genesis-nav-menu li li
margin-left: 0;
.nav-header-left .genesis-nav-menu li > .sub-menu li a
display: block;
width: auto;
font-weight: lighter;
font-size: 15px;
margin-top: 15px;
font-family: 'Fjalla One', sans-serif;
.nav-header-left .genesis-nav-menu .sub-menu a
background-color: #fff;
color: #333;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav class="nav-header-left">
<ul id="menu-left" class="menu genesis-nav-menu">
<li id="menu-item-377" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-377"><a href="#" itemprop="url"><span itemprop="name">Courses</span></a>
<ul class="sub-menu">
<li id="menu-item-376" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-376"><a href="#" itemprop="url"><span itemprop="name">Ontario</span></a></li>
<li id="menu-item-388" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-388"><a href="#" itemprop="url"><span itemprop="name">Nova Scotia</span></a></li>
<li id="menu-item-374" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-374"><a href="#" itemprop="url"><span itemprop="name">Driving Ranges</span></a></li>
<li id="menu-item-375" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-375"><a href="#" itemprop="url"><span itemprop="name">Daily Updates</span></a></li>
<li id="menu-item-392" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-392"><a href="#" itemprop="url"><span itemprop="name">Loch March</span></a></li>
</ul>
</li>
<li id="menu-item-219" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-219"><a target="_blank" href="#" itemprop="url"><span itemprop="name">Tee Times</span></a></li>
<li id="menu-item-63" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-63"><a href="#" itemprop="url"><span itemprop="name">Memberships</span></a>
<ul class="sub-menu">
<li id="menu-item-487" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-487"><a href="#" itemprop="url"><span itemprop="name">Member Guest Days</span></a></li>
<li id="menu-item-395" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-395"><a href="#" itemprop="url"><span itemprop="name">2018 Memberships</span></a></li>
<li id="menu-item-396" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-396"><a href="#" itemprop="url"><span itemprop="name">Add-On Programs</span></a></li>
<li id="menu-item-398" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-398"><a href="#" itemprop="url"><span itemprop="name">Corporate Programs</span></a></li>
<li id="menu-item-397" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-397"><a href="#" itemprop="url"><span itemprop="name">FAQs</span></a></li>
</ul>
</li>
</ul>
</nav>
【讨论】:
Musasllam 这太棒了!一个问题,不过。如果连续两次单击菜单项而不是重新打开菜单,是否有任何方法可以关闭菜单?或者在单击页面上的其他位置时关闭菜单。感谢您的所有帮助! 更新了答案以上是关于单击另一个菜单项时如何切换菜单的主要内容,如果未能解决你的问题,请参考以下文章