2012-04-05 50 views
8

Básicamente estoy tratando de obtener el elemento de destino de event.target y si no es igual proceso. ¿Cómo puedo hacer que funcione lo siguiente?Usar event.target para obtener el 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(".."); 
     } 

    }); 
}); 

Respuesta

12

uso

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

EDITAR - si la estructura es la de su uso comentario:

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 - explicación de mi código. Si usted tiene esta marcado

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

significa este código

//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' es un objeto, no una cadena. Su ** 'id' ** es una cadena. –

+0

Cuando hago un console.log (event.target); devuelve li de div ... pero no div id #contents, por lo que el código anterior no funcionará :( Estructura es algo así

  • Item1
  • Item2
user1184100

+0

@ user1184100 he editado mi comprobación de respuesta si funciona para usted y publico su marcado en su pregunta –

Cuestiones relacionadas