1

StackOverflowの質問から次のコードを取得しました。

$('body').click(function(event) {
    if (!$(event.target).closest('#myDiv').length) {
        $('#myDiv').hide();
    };
});

唯一の問題は、Firefox(Safariでは動作します)では動作しないことです。何故ですか?Firefoxと互換性を持たせるにはどうすればよいですか?

4

2 に答える 2

1

これは、どの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

于 2012-05-10T18:42:40.410 に答える
0

これを試して、うまくいかなかった場合はお知らせください

$('body').click(function(event) {
    target = (window.event) ? window.event.srcElement /* for IE */ : event.target;
    if (!($(target).closest('#myDiv').length>0)) {
        $('#myDiv').hide();
    };
});
于 2012-05-10T18:45:44.307 に答える