2012-08-31 18 views
9

Biorąc pod uwagę element, zmienną zawierającą obiekt javascript/DOM, jak określić, czy event.target jest elementem wewnątrz element czy nie?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> 

Jeśli element jest myDiv zdarzenie występujące na wewnętrznej div lub wejścia, lub jakikolwiek inny element, który może istnieć wewnątrz myDiv powinny powodować oświadczenie do oceny true.

Wyobrażam sobie, że mógłbym użyć funkcji rekurencyjnej do zbudowania tablicy elementów potomnych, a następnie sprawdzić, czy event.target znajduje się w tablicy, ale chcę sprawdzić, czy najpierw istnieje prostsza odpowiedź.

Odpowiedz

33

Można również użyć .has()

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

+1, to też działa. – Nick

+0

Dotyczy to niepotrzebnej pracy. – SLaks

+8

Odnosząc się do tego pytania po napotkaniu podobnego problemu, wydaje się, że odpowiedź SLAKS działa tylko dla najbliższych dzieci, podczas gdy prace Musa dla wszystkich potomków. Jeśli chcesz sprawdzić, czy kliknięty element jest zawarty wewnątrz danego rodzica na dowolnym poziomie, jest to poprawny kod do użycia. Obaj pracują dla dzieci na jednym poziomie, a odpowiedź SLaksa może być bardziej skuteczna, jeśli wiesz, że jest tylko jeden poziom kontroli nad dziećmi. – Nick