13

给定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>

如果elementmyDiv,内部 div 或输入上发生的事件,或可能存在于内部的任何其他元素myDiv应导致语句评估为真。

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

4

2 回答 2

40

你也可以使用.has()

if ($(element).has(e.target).length > 0){
//
}
于 2012-08-31T20:46:12.390 回答
14

jQuery来救援

if (jQuery.contains(element, e.target))
于 2012-08-31T20:42:36.053 回答