我怎么能保持超级子菜单打开后鼠标离开顶部导航按钮
How can I keep mega sub menu open after mouse leaves top navigation button?
我是jQuery新手。我试图设置一个巨型下拉,是100%的宽度在屏幕上,但内容是居中。而且顶部导航按钮居中。
如何在鼠标离开顶部按钮后保持子内容区域打开?
小提琴在这里:http://jsfiddle.net/uf1107qs/
$('.top1').on('mouseenter', function () {
$('.sub1').slideDown(200).addClass('.abTop');
$('.fades1').delay(50).fadeIn(200);
});
$('.top1').on('mouseleave', function () {
$('.sub1').delay(600).slideUp(200).removeClass('.abTop');
$('.fades1').fadeOut(0);
});
您是否希望
.subX
和.fades1
一直显示并且永不关闭?也许这就是你想要的?
JSFIDDLE罢工
编辑:
很抱歉我之前的误解。您可以通过使用setTimeout而不是delay
来实现这一点,结果如下:JSFIDDLE,尽管它仍然很难看,因为它里面有许多重复的代码。
基本上你需要setTimeout
当mouseleave
为顶部,clearTimeout
当mouseenter
为顶部或子
其他方式:
的另一种方式来实现,你可以只使用CSS通过使用CSS属性,如position
, visibilty
, opacity
, z-index
,就像这个例子在JSFIDDLE
不使用延迟或超时。你可以使用回调函数,大多数jQuery内置函数都支持回调函数。这是你的代码:
$('.top1').on('mouseenter', function () {
$('.sub1').slideDown(200).addClass('.abTop');
$('.fades1').delay(50).fadeIn(200);
});
下面是我使用"回调"概念的版本:
$('.top1').on('mouseenter', function () {
//see the difference?
$('.sub1').slideDown(200, function(){
$('.fades1').fadeIn(200);
}).addClass('.abTop');
});
实际上发生的事情是slideDown()能够接受一个可选参数,该参数是函数。这个函数只有在200ms之后才会被触发(因为你把它设置为slideDown(200))。
在这种情况下,回调函数是一个简单的函数,只有在父函数(为了简单起见)完成它应该做的事情之后才被调用。查看更多信息:
http://www.w3schools.com/jquery/jquery_callback.asp 还因为你是jQuery新手,你一定要看看hover()函数。你将能够简化你的代码,减少大约一半的JS行数,并且可读性更强!
http://api.jquery.com/hover/相关文章:
- 如何在按住鼠标按钮且光标在视口外时检测鼠标离开
- 如果鼠标离开父对象,则隐藏元素
- 鼠标输入和鼠标离开不起作用
- 鼠标输入鼠标离开没有按照我认为应该的方式工作
- 鼠标离开浏览器窗口的Javascript修改
- 未检测到鼠标离开时的事件
- 鼠标离开后强制重新加载gif
- Angular:模拟触摸设备上的鼠标离开
- 如何激活鼠标离开,如果已经 x 时间
- 悬停(鼠标离开)方法不显示效果
- 正在处理.js - 当鼠标离开画布时继续交互
- mouse在 iframe 的内容中输入鼠标离开
- Javascript - 鼠标离开时延迟动画
- Jquery 鼠标悬停和鼠标离开
- 在单击时对元素进行动画处理,并在该元素和其他元素上单击鼠标输入/鼠标离开
- 鼠标离开不会再次打开
- 鼠标离开时悬停和反向的跨浏览器动画 gif
- FF 鼠标离开/鼠标输入事件
- 下拉导航 - 鼠标离开时菜单闪烁
- 如何将鼠标离开添加到我的文件中?以及我的代码会是什么样子