【问题标题】:jQuery dropdown menu not closingjQuery下拉菜单未关闭
【发布时间】:2014-01-24 14:07:02
【问题描述】:

我制作了一个下拉菜单,您单击第一个项目菜单以显示子菜单,以及该菜单中的任何子菜单在悬停/悬停时显示/隐藏。我遇到的唯一问题是我希望在单击文档的任意位置时关闭主导航。

jQuery(document).ready(function () {
        jQuery(".mainNav ul li").click(function () {
            jQuery(this).find("> ul").css({ "opacity": "1", "visibility": "visible", "top": "30px" });
            });
        jQuery(".sub-menu li").mouseover(function () {
            jQuery(this).find("> ul").css({ "opacity": "1", "visibility": "visible", "top": "30px" });
        });
        jQuery('.sub-menu li').mouseout(function () {
            jQuery(this).find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"});
        });});

//the code i tried below
jQuery('document').click(function () {
        jQuery(.mainNav ul li ).find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"});
    });});

    }); 

我假设这两个点击事件是冲突的,但我不太清楚如何处理它。

例如,如果我将点击事件更改为位于其正下方的“h1”元素,则我搞砸了并且下拉菜单关闭。然后我将其更改为 .container 并且子菜单根本没有出现。

【问题讨论】:

  • 不应该是jQuery(.mainNav ul li )jQuery('.mainNav ul li' )
  • 啊,是的,我是手写输入的,不是复制/粘贴。谢谢!

标签: jquery


【解决方案1】:

你可以使用jQuery的.not:not

jQuery(document).not(".mainNav ul").click(function () {
    jQuery(".mainNav ul li").find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"});
});});

您在我添加的选择器中缺少一些括号

您还有一组额外的});,并且您的document click 函数不在 ready 函数内。试着把它放在 ready 函数中,like so 通过删除 }); 之后的 mouseout

另外,如果您愿意,可以使用 $ 代替 jQuery

编辑

我使用 :noton("click",... 让它工作 in my jsFiddle 如果只是这个 sn-p 不起作用,请尝试完整的 jQuery

jQuery(document).on("click", ":not(.mainNav ul, .mainNav ul *)", function () {
    jQuery(".mainNav ul li").find("> ul").css({
        "opacity": "0",
            "visibility": "hidden",
            "top": "35px"
    });
});

【讨论】:

  • 这对于 wordpress 主题会有什么不同吗,也许这就是它不起作用的原因?我在某处读到在使用 wordpress 时应该使用 jQuery 而不是 $,也许那是一篇旧文章?去掉引号还是不行,该死。
  • 应该没什么区别,不
  • 子菜单现在根本不出现
  • 又更新了,看看有没有帮助
  • 好的,使用 jsfiddle 中的代码使其工作。仍然不知道我做错了什么哈哈。非常感谢!
【解决方案2】:

你可以试试这个:

jQuery(document).not('.mainNav ul').click(function () {
//-----^------^-------you have to remove quotes here.

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 2021-05-11
    • 2017-06-28
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2014-03-06
    • 2019-12-05
    • 2015-11-12
    相关资源
    最近更新 更多