首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >右键单击jQuery Hover菜单时消失。

右键单击jQuery Hover菜单时消失。
EN

Stack Overflow用户
提问于 2015-04-17 08:23:37
回答 1查看 1.3K关注 0票数 1

我有一个在悬停时打开的菜单。但是在右键单击时,当context菜单打开时,菜单就会消失。但我搞不懂为什么。我需要同时打开的悬停菜单与contextmenu/右键单击。

jQuery代码(版本jquery-1.11.2.min.js):

代码语言:javascript
运行
复制
    jQuery(document).on('mouseover','#main_menu',function() {

        jQuery('#main_menu_inner').show();

    });
    jQuery(document).on('mouseleave','#main_menu',function() {

        jQuery('#main_menu_inner').hide();

    });

HTML:

代码语言:javascript
运行
复制
<div id="main_menu">
    <img id="menu_button" src="/skin/images/all/structure/menu_button.png" alt="Men&uuml;" />
    <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>
EN

回答 1

Stack Overflow用户

发布于 2015-04-17 08:54:03

您可以通过添加一个布尔值来检查上下文菜单是否打开到mouseover事件处理程序中,从而“攻击”mouseleave /mouseleave行为。这并不是一个很好的实践,但它使您的请求成为可能:

代码语言:javascript
运行
复制
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();
    }
});

活例

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29693979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档