【发布时间】:2018-02-06 20:28:40
【问题描述】:
我在导航中有菜单项,当它们悬停时,我应用一个类,当它们没有悬停时,通过 .toggleClass() 删除一个类。
但是,如果有人单击这些菜单项之一,并且当页面重新加载时,他们的鼠标仍停留在该菜单顶部,则当页面重新加载时,当鼠标不再悬停在该菜单项上并删除时,将添加该类当菜单项悬停时 - 与我想要的完全相反。
HTML
<div class="mega-menu">
<div class="mega-menu-2 mega-menu-item">{mega-menu-2:content}</div>
</div>
jQuery
$('.wsite-nav-2, .mega-menu-2').on('hover', function(e) {
$('.nav, .nav .container').css('overflow', 'initial');
e.preventDefault();
$('.mega-menu-2').removeClass('show');
$('.mega-menu-2').toggleClass('show');
});
【问题讨论】:
-
删除类的代码在哪里?你现在拥有它的地方,它后面紧跟着一个切换,所以不可能是这样。
-
.removeClass后跟.toggleClass与addClass相同。 -
是的,我希望当页面加载时,菜单项将被悬停,因此如果应用了该类,它将被删除——干净的石板。然后 .togglelClass() 可以正确接管。
-
不要使用
toggleClass,除非你有完全的控制权(你没有)。显式使用addClass/removeClass。您可以检查鼠标是否在页面加载时悬停在项目上,例如:stackoverflow.com/a/42539345/2181514 或类似$(".mega-menu-2').is(":hover")的东西(请参阅此处以获取与最新 jquery 兼容的代码:stackoverflow.com/a/8981521/2181514)。 -
或者只使用css
:hover