2012-08-31 11 views
9

Dato element, una variabile contenente un oggetto javascript/elemento DOM, come faccio a determinare se event.target è un elemento all'interno di element oppure no?jquery event.target is_a_child_of (elemento)

function(event){ 
    // assume that var element exists in this scope 
    if(event.target == a_child_of(element)) 
     // do something 
} 


<div id="myDiv"> 
    <div class="innerDiv"> 
     <input type="text"/> 
    </div> 
</div> 

Se element è myDiv, un evento verificatosi sul div interno o l'ingresso, o qualsiasi altro elemento che può esistere all'interno myDiv dovrebbe causare l'istruzione per valutare true.

Immagino di poter utilizzare una funzione ricorsiva per creare un array di elementi figlio e quindi controllare se l'event.target si trova nell'array, ma voglio vedere se c'è prima una risposta più semplice.

risposta

33

È inoltre possibile utilizzare .has()

if ($(element).has(e.target).length > 0){ 
// 
} 
+1

+1, anche questo funziona. – Nick

+0

Ciò comporta un lavoro non necessario. – SLaks

+8

Rivisitando questa domanda dopo aver incontrato un problema simile, sembra che la risposta SLaks funzioni solo per i bambini immediati, mentre i lavori di Musa per tutti i discendenti. Se vuoi controllare se l'elemento cliccato è contenuto all'interno del genitore dato a qualsiasi livello, questo è il codice corretto da usare. Entrambi funzionano per i bambini di livello singolo e la risposta di SLaks potrebbe essere più efficace se si sa che c'è solo un livello di bambini da controllare. – Nick