2012-08-31 15 views
9

Dada element, una variable que contiene un objeto javascript/elemento DOM, ¿cómo puedo determinar si el event.target es un elemento dentro de element o no?jquery event.target is_a_child_of (element)

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> 

Si element es myDiv, un evento que ocurre en el div interior o la entrada, o cualquier otro elemento que pueda existir en el interior myDiv debe provocar la declaración de evaluar a true.

Imagino que podría usar una función recursiva para crear una matriz de elementos secundarios y luego verificar si el event.target está en la matriz, pero quiero ver si hay una respuesta más simple primero.

Respuesta

33

También puede utilizar .has()

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

+1, esto también funciona. – Nick

+0

Esto implica un trabajo innecesario. – SLaks

+8

Revisando esta pregunta después de encontrarse con un problema similar, parece que la respuesta de SLaks solo funciona para niños inmediatos, mientras que la de Musa funciona para todos los descendientes. Si desea verificar si el elemento seleccionado está dentro del padre dado en cualquier nivel, este es el código correcto para usar. Ambos funcionan para niños de un solo nivel, y la respuesta de SLaks puede ser más eficiente si sabes que hay un solo nivel de niños para controlar. – Nick