2017-06-06 10 views
0

ちょうど私がコンテナの内部をクリックすると、それがクリックで表示されないようにifステートメントにもかかわらず警告ポップアップが表示されるのだろうかと疑問に思う。JQuery - このような状況でevent.targetが動作しないのはなぜですか?

また、どのように子供の内部をテストするのですか?

https://jsfiddle.net/w8fd3m67/

$(window).on("click", function(event) { 
 
    var container = $("#container"); 
 
    if ((event.target) !== container) { 
 
    alert("clicked outside"); 
 
    } 
 
});
body { 
 
    height: 600px; 
 
} 
 

 
#container { 
 
    padding: 2rem; 
 
    background: grey; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 

 
</div>

乾杯

+2

を。 – CBroe

答えて

1

あなたは共同し.is()機能を使用し.is()

if($(event.target).is(container)) 
1

を使用する必要がありますお使いのjQueryの要素にイベントターゲットをmpare:

$(window).on("click", function(event) { 
 
    var container = $("#container"); 
 
    if ($(event.target).is(container)) { 
 
    alert("clicked outside"); 
 
    } 
 
});
body { 
 
    height: 600px; 
 
} 
 

 
#container { 
 
    padding: 2rem; 
 
    background: grey; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 

 
</div>

+0

子供がいるかどうかのチェックはどうですか? JQueryでこれが変わったのですか?私の例はなぜ機能しないのですか? Cheers –

+0

ターゲット要素の子要素は '.children()'関数でアクセスできます。あなたの例は、JQueryオブジェクトをDOM要素と比較したので動作しませんでした。 – Zenoo

1

id比較。ここで$("#container") jQueryオブジェクトは、あなたが一致しませんjQueryオブジェクトにDOM要素を比較している

$(window).on("click", function(event) { 
 
    if ((event.target.id) !== 'container') { 
 
    alert("clicked outside"); 
 
    } 
 
});
body { 
 
    height: 600px; 
 
} 
 

 
#container { 
 
    padding: 2rem; 
 
    background: grey; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 

 
</div>

1

です。ターゲットからjQueryオブジェクトを作成し、それが#containerの子孫であるかどうかを確認します。これは、子要素が#container以下の場合にも機能します。

Updated fiddle

$(window).on("click", function(event) { 
    if ($(event.target).closest('#container').length == 0){ 
    alert("clicked outside"); 
    } 
}); 
1

この試してください:あなたがここにjQueryオブジェクトにDOM要素の参照(event.target)を比較しているので

​​
関連する問題