2012-04-05 4 views
8

zu bekommen Ich versuche im Grunde, das Zielelement aus event.target und wenn nicht gleich Prozess zu bekommen. Wie kann ich das folgende Ding zum Funktionieren bringen?Verwenden von event.target, um Element

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

    }); 
}); 

Antwort

12

Verwendung

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

EDIT - wenn die Struktur ist, dass Ihr Kommentar Verwendung:

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 - Erklärung meines Codes. Wenn Sie diese Markup

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

haben dieser Code bedeutet

//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' ist ein Objekt, kein String. Seine ** 'id' ** ist eine Zeichenkette. –

+0

Wenn ich eine console.log (event.target); es gibt li div .. aber nicht div id #contents so über Code wird nicht funktionieren :( Struktur ist so etwas wie

  • Item1
  • Item2
user1184100

+0

@ user1184100 ich bearbeitet meine Antwort überprüfen, ob es für Sie funktioniert und Ihre Markup in Ihre Frage –

Verwandte Themen