尝试让它,所以当我悬停在问题选项卡,一个子菜单下降,当你离开选项卡它消失。这部分工作,但是,当用户悬停在子菜单我希望它仍然存在。这是不工作的部分,它立即消失,即使设置超时功能设置为3秒。我不知道它为什么会这样。
let timeout;
$('nav > ul li:first-child').on('mouseenter click', function () {
if ($('.issues').css('display') == 'none') {
$('.issues').slideDown('slow');
}
else {
$('.issues').slideUp();
}
}).on('mouseleave', function () {
timeout = setTimeout(function () {
$('.issues').slideUp();
}, 3000);
});
$('.issues').mouseenter(function() {
clearTimeout(timeout);
});
.issues {
display: none;
position: static;
margin-top: 0;
padding-left: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav>
<ul>
<li><a>Issues</a></li>
<ul class="issues">
<li><a>X</a></li>
<li><a>Y</a></li>
<li><a>Z</a></li>
</ul>
<li><a>Press Releases</a></li>
<li><a>Donate</a></li>
</ul>
</nav>
2条答案
按热度按时间dpiehjr41#
UL应该在LI中才是有效的HTML。这样你就不需要子菜单来取消超时,因为鼠标还没有离开LI。
esbemjvw2#
为了简单起见,我会这样做: