javascript - 如何在不单击的情况下保持子菜单打开

标签 javascript jquery html

我有一个 html 导航菜单,单击即可打开子菜单,如下所示...

$("#nav_evnavmenu > li > a").click(function () { // binding onclick
    if ($(this).parent().hasClass('selected')) {
        $("#nav_evnavmenu .selected div div").slideUp(100); // hiding popups
        $("#nav_evnavmenu .selected").removeClass("selected");
    } else {
        $("#nav_evnavmenu .selected div div").slideUp(100); // hiding popups
        $("#nav_evnavmenu .selected").removeClass("selected");

        if ($(this).next(".subs").length) {
            $(this).parent().addClass("selected"); // display popup
            $(this).next(".subs").children().slideDown(200);
        }
    }
}); 

我想在悬停时实现同样的目标,但它不起作用。它要么不打开子菜单,要么不打开其他各种东西,这是我尝试过的一个明显的方法:

$("#nav_evnavmenu > li > a").hover(function () { // detect hover
    if ($(this).parent().hasClass('selected')) {
        $("#nav_evnavmenu .selected div div").slideUp(100); // hiding popups
        $("#nav_evnavmenu .selected").removeClass("selected");
    } else {
        $("#nav_evnavmenu .selected div div").slideUp(100); // hiding popups
        $("#nav_evnavmenu .selected").removeClass("selected");

        if ($(this).next(".subs").length) {
            $(this).parent().addClass("selected"); // display popup
            $(this).next(".subs").children().slideDown(200);
        }
    }
}); 

我也尝试过:

$("#nav_evnavmenu > li > a").hover(function () { // detect hover
    $(this).click();
}); 

如有任何帮助,我们将不胜感激。

编辑:以下是一些 HTML:

<div class="menu_evnavmenu">
    <span>
        <ul id="nav_evnavmenu">
            <li><a href="#">Home</a></li>
            <li><a href="#">Menu 1</a>
                <div class="subs">
                    <div class="wrp2">
                        <ul>
                            <li><h3>1</h3>
                                <ul>
                                    <li>1</li>
                                    <li>2</li>
                                </ul>
                            </li>
                        </ul>
                        <p class="sep"></p>
                        <ul>
                            <li><h3>2</h3>
                                <ul>
                                    <li>1</li>
                                    <li>2</li>
                                </ul>
                            </li>
                            <li><h3>3</h3>
                                <ul>
                                    <li>1</li>
                                    <li>2</li>
                                </ul>
                            </li>
                        </ul>
                    </div>
                </div>
            </li>
            <li><a href="#">Menu 2</a>
                <div class="subs">
                    <div class="wrp2">
                        <ul>
                            <li><h3>1</h3>
                                <ul>
                                    <li>1</li>
                                    <li>2</li>
                                </ul>
                            </li>
                        </ul>
                        <p class="sep"></p>
                        <ul>
                            <li><h3>2</h3>
                                <ul>
                                    <li>1</li>
                                    <li>2</li>
                                </ul>
                            </li>
                            <li><h3>3</h3>
                                <ul>
                                    <li>1</li>
                                    <li>2</li>
                                </ul>
                            </li>
                        </ul>
                    </div>
                </div>
            </li>
        </ul>
    </span>
</div>

以下是当鼠标离开菜单时我关闭菜单的方法:

$('.wrp2').on('mouseleave', function(e) { // close menu on mouseout
        $("#nav_evnavmenu .selected div div").slideUp(100); // hiding popups
        $("#nav_evnavmenu .selected").removeClass("selected");
});

最佳答案

也许可以尝试:

$('#nav_evnavmenu > li > a').on('mouseover click', function(e) {
    e.stopPropagation();
    // do your action on mouseover and click
});

您可能还想看看您在代码片段中使用的一些 jQuery 选择器 - 如果您能够添加它们,也许是元素上的一些类,而不是嵌套选择器,并缓存它们变量中的性能和重用会更好。

关于javascript - 如何在不单击的情况下保持子菜单打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374528/

相关文章:

PHP 函数内的 Javascript Ajax 数据

javascript - Bootstrap 工具提示不考虑数据放置参数

javascript - HTML5 排序 DIV

javascript - 如何使用 TR 滚动选项框?

jquery - 如何在Ajax请求中添加自定义 header 以进行跨域JsonP调用

javascript - 简单的 HTML/JavaScript 不将 cookie 保存在硬盘上

javascript - 使用javascript将一张透明图像叠加在另一张透明图像上

javascript - 使用外部 JS 的“预期对象”

javascript - 输入字符串以从字符串数组中搜索,但是是什么导致需要空格或第二个字母开头?

jquery - 所有包含元素的宽度 + 最后一个元素的宽度