jquery event.target is_a_child_of(element)

Nic*_*ick 11 javascript jquery javascript-events

给定element一个包含javascript对象/ DOM元素的变量,如何确定event.target是否是一个元素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>
Run Code Online (Sandbox Code Playgroud)

如果elementmyDiv,内部div或输入上发生的事件或内部可能存在的任何其他元素myDiv应该使该语句评估为true.

我想我可以使用递归函数来构建子元素数组,然后检查event.target是否在数组中,但我想先看看是否有更简单的答案.

Mus*_*usa 37

你也可以使用 .has()

if ($(element).has(e.target).length > 0){
//
}
Run Code Online (Sandbox Code Playgroud)

  • 在遇到类似的问题之后重新审视这个问题,似乎SLaks的答案只适用于直接的孩子,而Musa适用于所有后代.如果要检查单击的元素是否包含在任何级别的给定父级内,则这是要使用的正确代码.两者都适用于单级孩子,如果你知道只有一个级别的孩子需要检查,那么SLaks的答案可能更有效. (10认同)

SLa*_*aks 13

jQuery救援:

if (jQuery.contains(element, e.target))
Run Code Online (Sandbox Code Playgroud)