2012-04-05 16 views
8

Sto sostanzialmente cercando di ottenere l'elemento di destinazione da event.target e se non uguale processo. Come posso far funzionare la cosa sotto?Utilizzo di event.target per ottenere l'elemento

$(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(".."); 
     } 

    }); 
}); 

risposta

12

uso

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

EDIT - se la struttura è quella del tuo commento utilizzo:

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

EDIT 2 - spiegazione del mio codice. Se si dispone di questo markup

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

Questo codice indica

//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 
+1

+1 @ user1184100: 'event.target' è un oggetto, non una stringa. Il suo ** id '** è una stringa. –

+0

Quando faccio un console.log (event.target); restituisce Li di div .. ma non div id #contents così sopra il codice non funziona :( Struttura è qualcosa di simile

  • Item1
  • Item2
user1184100

+0

@ user1184100 ho modificato la mia risposta di controllo se funziona per voi e post il vostro codice nella tua domanda –

Problemi correlati