11

私は基本的にevent.targetからターゲット要素を取得しようとしていますが、等しくない場合はプロセスです。以下のものを機能させるにはどうすればよいですか?

$(document).ready(function(){
   $(document).click(function(event) {

       if(event.target!='#contents') {  //If clicked element is not div #contents show alert .. //How can i achieve this ?
         alert("..");
       }

    });
});
4

1 に答える 1

17

使用する

   //If clicked element id is not contents 
   if(event.target.id !== 'contents') {  
     alert("..");
   }

編集-構造がコメントの構造である場合は、次を使用します。

  if($(event.target).closest('div#contents').length === 0){
    alert('there is no div with id === "contents" in the ancestors of the clicked li');
   }

編集2-私のコードの説明。このマークアップがある場合

<div id="contents"><ul><li>Item1</li><li>Item2</li></ul></div>

このコードは

//event.target is a DOM element, so wrap it into a jQuery object
$(event.target)
        .closest('div#contents')//find a div element going up the dom tree. 
                                //This method returns a jQuery collection that it's 
                                //empty if the div is not found
        .length //the collection has a length 
                //property that is equal to the number of found elements
于 2012-04-05T09:29:57.613 に答える