Javascript 悬停jquery时保持子菜单打开
我有一个下拉菜单,我想保持悬停打开。我以前使用的是.click(),它将保持打开状态,但当我将代码更改为.hover()时,当我将鼠标移离顶部链接时,它就会消失。 这是我的密码:Javascript 悬停jquery时保持子菜单打开,javascript,jquery,navigation,hover,Javascript,Jquery,Navigation,Hover,我有一个下拉菜单,我想保持悬停打开。我以前使用的是.click(),它将保持打开状态,但当我将代码更改为.hover()时,当我将鼠标移离顶部链接时,它就会消失。 这是我的密码: <nav> <div class="nav-mobile"> <a id="nav-toggle" href="#"><span></span></a> </di
<nav>
<div class="nav-mobile">
<a id="nav-toggle" href="#"><span></span></a>
</div>
<ul class="nav-list">
<li><a href="#">Solutions</a>
<ul class="nav-dropdown">
<li><a href="#">Click & Collect</a></li>
<li><a href="#">Endless Aisle</a></li>
<li><a href="#">Ship from Store</a></li>
<li><a href="#">Partner Dropship</a></li>
<li><a href="#">In-Store Returns</a></li>
<li><a href="#">Fulfillment Optimization</a></li>
</ul>
</li>
<li><a href="#">The Way We Work</a>
<ul class="nav-dropdown">
<li><a href="#">Software as a Service</a></li>
<li><a href="#">Delivering Best Practice</a></li>
<li><a href="#">Reusable Integrations</a></li>
<li><a href="#">Partner Collaboration</a></li>
<li><a href="#">Sharing Success</a></li>
<li><a href="#">Living Our Values</a></li>
</ul>
</li>
<li><a href="#"><img class="flag" src="assets/english.png" alt="">English</a>
<ul class="nav-dropdown">
<li><a href="#"><img class="flag" src="assets/cantonese.png" alt="">Cantonese</a></li>
<li><a href="#"><img class="flag" src="assets/japanese.png" alt="">Japanese</a></li>
<li><a href="#"><img class="flag" src="assets/korean.png" alt="">Korean</a></li>
<li><a href="#"><img class="flag" src="assets/mandarin.png" alt="">Mandarin</a></li>
</ul>
</li>
</ul>
</nav>
如何使其在hover上工作 检查此链接,Nutail解释得很好,您需要为鼠标进入和鼠标离开事件编写代码。检查此链接,Nutail解释得很好,您需要为鼠标进入和鼠标离开事件编写代码。您在使用悬停选择器时犯了一些错误,您必须使用
父项>子项
选择器。为了消除mouseout效应,我对您的代码做了一些更改,以提高可读性,请检查以下内容:
$(“.nav下拉列表”).hide()
$('nav>ul>li>a:not(.only child)).mouseenter(函数(e){
$('.nav下拉列表').hide();
$(this).next('.nav下拉列表').slideToggle();
e、 停止传播();
});
/*$('nav ul li>a:not(.only child)).mouseleave(函数(e){
$(this).sides('.nav下拉列表').slideToggle();
e、 停止传播();
})*/
$('html:not(.nav dropdown')。单击(函数(){
$('.nav下拉列表').hide();
});
$(“#导航切换”)。单击(函数(){
$('nav ul')。滑动切换();
});
$(“#导航切换”)。打开('单击',函数(){
this.classList.toggle('active');
});代码>
.nav list>li{
边框:1px纯黑;
宽度:300px;
}
-
-
-
您在使用悬停选择器时犯了一些错误,您必须使用父项>子项
选择器。为了消除mouseout效应,我对您的代码做了一些更改,以提高可读性,请检查以下内容:
$(“.nav下拉列表”).hide()
$('nav>ul>li>a:not(.only child)).mouseenter(函数(e){
$('.nav下拉列表').hide();
$(this).next('.nav下拉列表').slideToggle();
e、 停止传播();
});
/*$('nav ul li>a:not(.only child)).mouseleave(函数(e){
$(this).sides('.nav下拉列表').slideToggle();
e、 停止传播();
})*/
$('html:not(.nav dropdown')。单击(函数(){
$('.nav下拉列表').hide();
});
$(“#导航切换”)。单击(函数(){
$('nav ul')。滑动切换();
});
$(“#导航切换”)。打开('单击',函数(){
this.classList.toggle('active');
});代码>
.nav list>li{
边框:1px纯黑;
宽度:300px;
}
-
-
-
然后你必须评论mouseleave代码然后你必须评论mouseleave代码这太好了,非常感谢。比我看到的要清楚得多。我会添加鼠标离开功能吗?谢谢你的帮助,我是javascript/jquery的新手,有时会很高兴能帮上忙。你可以删除mouseout函数,如果你不需要在鼠标不在的时候做一些事情,如果你不离开它并添加你需要工作的代码。这很好,非常感谢。比我看到的要清楚得多。我会添加鼠标离开功能吗?谢谢你的帮助,我是javascript/jquery的新手,有时会很高兴能帮上忙。你可以删除mouseout函数,如果你不需要在鼠标不在的时候做一些事情,如果你不离开它并添加你需要工作的代码。
function($) {
$(function() {
$('nav ul li > a').not($('.only-child')).mouseenter(function(e){
$(this).siblings('.nav-dropdown').slideToggle();
$('.nav-dropdown').not($(this).siblings()).hide();
e.stopPropagation();
});
$('nav ul li > a').not($('.only-child')).mouseleave(function(e) {
$(this).siblings('.nav-dropdown').slideToggle();
e.stopPropagation();
})
$('html').click(function(){
$('.nav-dropdown').hide();
});
$('#nav-toggle').click(function() {
$('nav ul').slideToggle();
});
$('#nav-toggle').on('click', function() {
this.classList.toggle('active');
});
});
})(jQuery);