javascript - 当用户单击除 <li> 及其所有子项之外的任何内容时关闭菜单

标签 javascript jquery

<分区>

关于这个的帖子有很多很多,但我无法找到任何有效的方法。作为最后的手段,我尝试使用 .not() 方法(下面的代码)列出列表项的所有子项。但是还是注册了点击功能。

$("body").not("li.settingsNav, li.settingsNav a, li.settingsNav i, 
               li.settingsNav span, li.settingsNav .module-dd, 
               li.settingsNav .module-dd-content, 
               li.settingsNav .module-dd .subnav-content, li.settingsNav span, 
               li.settingsNav div, li.settingsNav a, li.settingsNav ul, 
               li.settingsNav ul li")
         .on('click', function () {
               console.log('do this thing');
});

我想要点击触发操作,列表项和所有 div/spans/等除外。包含在其中。

谢谢,并对重复发帖表示歉意。

最佳答案

很容易做到的是查看目标并查看它是否是您的菜单元素。给父 UL 一个类。

$(document).on("click", function(e) {
    if (!$(e.target).closest('.menu')) {
        $('#yourMenu').hide();
    }
});

关于javascript - 当用户单击除 <li> 及其所有子项之外的任何内容时关闭菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21787162/

相关文章:

javascript - Codewars 问题 'Happy numbers' 我怎样才能对我的代码进行一些更改以使其工作?

javascript - React 中的 JSON 对象解析问题

javascript - JS 包含字符串和字符串数字的数组的平均值

javascript - 使用线性渐变 CSS 将 html Div 分成 12 列

javascript - 混合内容错误谷歌标签管理器

javascript - 选择器 "not"的 querySelectorAll 在 IE 8 上不起作用

javascript - 在 jquery 代码块中使用时出现 'this' 问题

javascript - 使用 javascript 延迟自动移动 div

Jquery UI - 标签表现得很奇怪

c# - 使用 JavaScript 更新 div 标签而不刷新整个页面