右键单击时,jQuery悬停菜单消失
我有一个菜单,悬停时打开。但右键单击时,当上下文菜单打开时,菜单消失。但我不明白为什么。我需要使用contextmenu/右键单击同时打开悬停菜单 jQuery代码(版本jQuery-1.11.2.min.js): HTML:右键单击时,jQuery悬停菜单消失,jquery,hover,contextmenu,show-hide,right-click,Jquery,Hover,Contextmenu,Show Hide,Right Click,我有一个菜单,悬停时打开。但右键单击时,当上下文菜单打开时,菜单消失。但我不明白为什么。我需要使用contextmenu/右键单击同时打开悬停菜单 jQuery代码(版本jQuery-1.11.2.min.js): HTML: <div id="main_menu"> <img id="menu_button" src="/skin/images/all/structure/menu_button.png" alt="Menü" /> &
<div id="main_menu">
<img id="menu_button" src="/skin/images/all/structure/menu_button.png" alt="Menü" />
<div id="main_menu_inner">
<img id="menu_arrow" src="/skin/images/all/structure/main_menu_arrow_down.png" alt="Arrow" />
<div class="clear_right"></div>
<ul>
<li>
<a href="">Link</a>
</li>
<li>
<a href="">Link</a>
</li>
<li>
<a href="">Link</a>
</li>
</ul>
</div>
</div>
-
-
-
您可以通过添加布尔值来检查上下文菜单是否打开到mouseleave
事件处理程序中,从而“破解”鼠标悬停的行为。这不是一个很好的做法,但它使您的请求成为可能:
var contextMenuOpened = false;
$(document).on('mouseover', '#main_menu', function () {
$('#main_menu_inner').show();
contextMenuOpened = false;
});
$(document).on('mouseleave', '#main_menu', function () {
$("#main_menu").on('contextmenu', function (e) {
contextMenuOpened = true;
});
if (!contextMenuOpened) {
$('#main_menu_inner').hide();
}
});
mouseleave
=>hide
Hmm但是当我删除mouseleave代码时,菜单在鼠标离开时保持不变。好吧,你需要在这里计算出逻辑。恐怕社区无法帮助您解决这一问题。好的,谢谢您的帮助:)项目是嵌套的,因此事件
正在冒泡。搜索一下,你就会把自己弄清楚。注册$(“#主菜单”)是个坏主意。在('contextmenu'
上为每个mouseleave
。如果你离开#主菜单
,例如树时间,那么就有为#主菜单
注册的树回调执行同样的操作。
var contextMenuOpened = false;
$(document).on('mouseover', '#main_menu', function () {
$('#main_menu_inner').show();
contextMenuOpened = false;
});
$(document).on('mouseleave', '#main_menu', function () {
$("#main_menu").on('contextmenu', function (e) {
contextMenuOpened = true;
});
if (!contextMenuOpened) {
$('#main_menu_inner').hide();
}
});