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 に答える