Register点击body上的所有内容,除了div和它的所有子元素



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

  $("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 -页面上最后一个函数

我如何改变这一点,使一切得到这个监听器,而不是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
      }
 });

最新更新