2

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 或其中的任何子元素?

4

1 回答 1

4

这应该做。

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
      }
 });
于 2013-06-21T00:59:34.177 回答