Nick
Nick

Reputation: 11394

jQuery event.target is_a_child_of(element)

Given element, a variable containing a JavaScript object/DOM element, how do I determine if the event.target is an element inside element or not?

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>

If element is myDiv, an event occurring on the inner div or the input, or any other element that may exist inside myDiv should cause the statement to evaluate to true.

I imagine that I could use a recursive function to build an array of child elements and then check if the event.target is in the array, but I want to see if there's a simpler answer first.

Upvotes: 13

Views: 17308

Answers (2)

Musa
Musa

Reputation: 97717

You can also use .has()

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

Upvotes: 40

SLaks
SLaks

Reputation: 888185

jQuery to the rescue:

if (jQuery.contains(element, e.target))

Upvotes: 14

Related Questions