我在这里在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()