【发布时间】:2015-05-14 12:18:24
【问题描述】:
当 div 具有 sticky 类时,我正在尝试向其添加鼠标悬停或悬停功能。所以当导航很粘时,homepage-sidemenu 应该得到display:none;。 .homepage-sidemenu.sticky 应该在鼠标悬停时变为可见,而在鼠标移出时不可见。
我认为这就像添加悬停功能一样简单,但不知何故我错过了一些东西,因为它没有做我想要的。粘性类添加了滚动功能。
fiddle here 演示会发生什么
所以我拥有的是这样的:
<div id="nav">
<ul class="menu">
<li class="highlight"><a href="">categories</a></li>
</ul>
</div>
<div id="content">
<div class="homepage-sidemenu">
<ul>
<li class="highlight">...</li>
</ul>
</div>
</div>
var fixmeTop1 = $('#nav').offset().top;
var fixmeTop = $('.homepage-sidemenu').offset().top + 100;
$(window).scroll(function () {
var currentScroll = $(window).scrollTop();
if (currentScroll >= fixmeTop1) {
$('#nav').addClass("sticky");
} else {
$('#nav').removeClass("sticky");
}
if (currentScroll >= fixmeTop) {
$('.homepage-sidemenu').addClass("sticky");
} else {
$('.homepage-sidemenu').removeClass("sticky");
}
});
$('#nav.sticky .menu li.highlight').mouseover(function () {
if ($('.homepage-sidemenu').hasClass('sticky')) {
$('.homepage-sidemenu.sticky').css('display', 'block');
}
});
需要发生的是,当主导航固定/向下滚动时,侧边菜单会消失。当悬停类别链接时,它应该变得可见。
我尝试了各种功能(悬停、鼠标输入、单击等)来完成这项工作,但没有成功。修复导航后,似乎缺少某些东西。
谁能指点我一些方向或告诉我我做错了什么?!
【问题讨论】:
-
试过直接的 CSS 吗?
-
在导航栏中添加和删除粘性类时尝试切换(隐藏/显示)侧边菜单
-
@EvanKnowles: Yes offcourse :) 然后出现的问题是sidemenu首先设置为display:none,然后以某种方式需要在悬停时显示/隐藏。我认为这不能用纯 CSS 完成,因为侧边菜单位于悬停的 div 之外。
-
对于您的信息,在您的情况下,您必须委托事件,例如:
$(document).on('mouseover', '#nav.sticky .menu li.highlight', function() {...});就是说,最好只使用 CSS 解决方案。编辑:就像你说的,如果不重写 HTML 标记,就不能只使用 CSS 解决方案
标签: javascript jquery html css