StackOverflowの質問から次のコードを取得しました。
$('body').click(function(event) {
if (!$(event.target).closest('#myDiv').length) {
$('#myDiv').hide();
};
});
唯一の問題は、Firefox(Safariでは動作します)では動作しないことです。何故ですか?Firefoxと互換性を持たせるにはどうすればよいですか?
これは、どのHTML要素がイベントのターゲットであるかからコピーされた古いトリックです。
$(function() {
$('body').click(function(event) {
var targ;
if (event.target) targ = event.target;
else if (event.srcElement) targ = event.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
if (!$(targ).closest('#myDiv').length) {
$('#myDiv').hide();
};
});
});
デモ
divの外側をクリックすると、divが非表示になります!$(targ).closest('#myDiv').length
これを試して、うまくいかなかった場合はお知らせください
$('body').click(function(event) {
target = (window.event) ? window.event.srcElement /* for IE */ : event.target;
if (!($(target).closest('#myDiv').length>0)) {
$('#myDiv').hide();
};
});