我在这里在stackoverflow上找到了一个解决方案,脚本如下:

jQuery(document).mouseup(function (e){
    var container = jQuery(".quick-info");
    if (container.has(e.target).length === 0) {
        container.hide();
    }
});


我的尝试是:

jQuery('body:has(.quick-info:visible):not(.quick-info)').click(function (e) {
    jQuery(".quick-info").hide();
});


所以我的脚本的意思是:捕获对body进行的单击,但不对.quick-info进行单击,并且body具有可见的.quick-info。
可能是什么问题?
可能是某些错误的选择器?

更新1

基于Raminson的答案。

jQuery('body> *:not(.quick-info)')。click(function(e){
    var container = jQuery(“。quick-info”);
    如果(container.has(e.target).length === 0 && e.target.nodeName!='A'){
    jQuery(“。quick-info”)。hide();
    }

});


因此,仅选择一个选择器。

e.target.nodeName!='A'用于link,它将打开此窗口。我知道,我可以在那里上课。

最佳答案

要么 :

jQuery('body:has(.quick-info:visible)').click(function (e){
    if($(e.target).is(".quick-info")) return;
    jQuery(".quick-info").hide();
});

//if($(e.target).hasClass("quick-info")) return;


基于VisioN注释和THIS帖子hasClass()首选is()

09-25 17:03