javascript - 注册单击 body 上除 div 及其所有子项之外的所有内容

标签 javascript jquery jquery-selectors

当单击页面上的任何不是它们或其容器(div.dropdown_container)的元素时,我试图隐藏一些li元素。但我似乎无法让它工作。

  $("body").on("click", "*:not(div.dropdown_container, div.dropdown_container > *)", function(e){
    // don't want to hide the very first `li`
    // it contains a span i want always to show
    $("ul.dropdown_ul > li:not(#first)").hide();
  });

JSBIN - very last function on the page

如何更改此设置,以便所有内容都能获取此监听器,但不能获取 div.dropdown_container 或其中的任何子元素?

最佳答案

这应该可以。

e.target 获取被单击的元素。

因此,这将检查点击是否是在 div 本身或其任何子级上生成的。

 $("body").on("click",function(e) {

      if( $(e.target).is('div.dropdown_container') 
             || $(e.target).closest('div.dropdown_container').length) {
            // do something
      }
      else {
         // do something else
      }
 });

关于javascript - 注册单击 body 上除 div 及其所有子项之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226145/

相关文章:

JavaScript 删除确认框

javascript - 在 Canvas 上绘图并在可内容编辑的 div 中写入,将绘图保持在 div 顶部

javascript - 删除标签中 url 的第一部分

javascript - 单击按钮后在 jQuery 函数中添加 “loading” 动画

jquery - 查找 id 属性开头的 select 元素时出现问题

javascript - 如何获取 jQuery 选择器返回列表的引用?

javascript - 我不断收到此错误语法错误 : JSON. 解析:JSON 数据第 1 行第 2 列出现意外字符

javascript - 从 Ajax 调用 Jquery 访问数据

javascript - 如何在 JavaScript 中添加点击事件上的圆圈?

jQuery 如何测试此 <a> 是否具有 href 属性