如何使菜单容器在悬停两个元素以外的所有元素时隐藏
How to make menu container hide when hovering all but two elements?
所以我正在为我的主菜单构建一个小的"UberMenu"功能,它几乎可以随心所欲地工作,只是如果鼠标不在上,我希望UberMenu容器隐藏起来
1) Uber菜单按钮或
2) UberMenu容器
现在,如果您将鼠标悬停在UberMenu按钮上,容器就会显示出来,如果您进入UberMenu容器,然后继续将鼠标悬停到另一个菜单项上,容器会隐藏起来。
这就是我想要的,但是,如果我将鼠标悬停在UberMenu按钮上,然后立即悬停在另一个菜单项上,容器将保持打开状态。
我尝试了十几个不同的片段,但都没有找到解决方案。
我想我需要在代码中添加一些if/else语句?
有人能在这里给我一些指导吗?非常感谢!:-)
这是我使用的代码:
//When mouse hovers UberMenu button, Show Container
$(".uber-menu-test").hover(function(e) {
e.preventDefault(); //To prevent default anchor tag behaviour
e.stopPropagation(); //To prevent parent container click event from firing
$(".uber-menu-frame").show(800);
});
// If mouse hovers either the content area or the navbararea, hide UberMenu container again
$(".block-type-content, .navbararea").mouseenter(function() {
$(".uber-menu-frame").hide(800);
});
我自己通过添加计时器找到了一个解决方案,我不确定这段代码有多扎实,但据我所知,它确实很管用!
对于任何感兴趣的人:
$(".uber-menu-test").hover(function(e) {
e.preventDefault(); //To prevent default anchor tag behaviour
e.stopPropagation(); //To prevent parent container click event from firing
$(".uber-menu-frame").show(800);
});
var myTimer = false;
$(".uber-menu-test ,.uber-menu-frame").hover(function(){
//mouse enter
clearTimeout(myTimer);
},function(){
//mouse leav
myTimer = setTimeout(function(){
$(".uber-menu-frame").fadeOut(800);
},100)
});
希望它能有所帮助,
$(".uber-menu-test").mouseenter(function(){
$(".uber-menu-frame").show(800);
}).mouseleave(function(){
$(".uber-menu-frame").hide(800);
});
相关文章:
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 如何在jQuery中包装两个元素的组
- JavaScript:当有两个B类元素时,如何在id X中的B类中选择A类
- 无法使以下ng on click outside指令在同一页面上的两个元素上工作
- Jquery:当两个或多个条件为true时,选择一个元素
- 如何按id查找两个类中任一类的子元素
- react-让一个元素返回两个相邻的<tr>标签
- 检查来自不同数组的两个元素的一个属性是否相等
- javascript函数包含两个元素和web音频api
- 如何比较两个字符串并删除jquery中的元素
- 将JQuery单击事件直接指向同一元素的两个
- 如何使用jQuery绕过具有指定类和两个条件的元素的函数
- 使用Javascript匹配两个HTML元素的高度
- 如何在两个动画画布元素之间进行通信
- 如何将日期和时间拆分为两个元素
- 检查最后两个元素
- 如何选择嵌套了两个 .each() 函数的多个元素
- 在两个元素的 onrender 事件之后执行函数
- 检查两个或多个 DOM 元素是否重叠
- 如何在同一个表中显示这两个嵌套ng重复的元素