2012-08-31 12 views
9

element、javascriptオブジェクト/ DOM要素を含む変数を指定すると、event.targetがelement内の要素であるかどうかをどのように判断できますか?jquery event.target is_a_child_of(要素)

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の内側に存在する可能性がある任意の他の要素で発生したイベントは、ステートメントがtrueと評価させなければなりません。

再帰関数を使って子要素の配列を作成し、event.targetが配列内にあるかどうかを確認することができますが、最初に単純な答えがあるかどうかを確認したいと思います。

答えて

10

jQuery to the rescue

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

1を使用することができます。ありがとう、私は許可されたら受け入れます。 – Nick

33

また.has()

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

+1、これも機能します。 – Nick

+0

これには不必要な作業が含まれます。 – SLaks

+8

同様の問題が発生した後にこの質問に戻ってみると、SLaksの回答は直接の子供にしか作用しないのに対し、Musaのものはすべての子孫に作用するようです。クリックされた要素が任意のレベルの任意の親に含まれているかどうかを確認する場合は、これが正しいコードです。両方ともシングルレベルの子供のために働きます。あなたがチェックする子供のレベルが1つしかないことがわかっている場合、SLakの答えはより効率的になります。 – Nick