2012-08-31 45 views
9

鑑於element,一個包含JavaScript對象/ DOM元素的變量,如何確定event.target是否是element中的元素?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> 

如果elementmyDiv,事件發生於內格或輸入,或可內部myDiv存在應引起評價爲真的語句的任何其它元件。

我想我可以使用遞歸函數來構建子元素的數組,然後檢查event.target是否在數組中,但我想先看看是否有更簡單的答案。

回答

33

您還可以使用.has()

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

+1,這也適用。 – Nick

+0

這涉及不必要的工作。 – SLaks

+8

在遇到類似問題後重溫這個問題,看起來SLaks的答案只適用於直系子女,而Musa的作品適用於所有後代。如果您想檢查點擊的元素是否包含在給定父級的任何級別內,則這是使用的正確代碼。兩者都適用於單一級別的孩子,如果您知道只有一個級別的孩子需要檢查,SLaks的答案可能會更有效。 – Nick