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();
        };
    });

});

DEMO 在 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 回答