如果在外部单击,则隐藏弹出窗口.为什么我的脚本没有'不起作用
Hiding popup if click was made outside. Why my script doesn't work?
我在这里找到了一个解决方案,在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();
});
所以我的脚本的意思是:点击身体,但没有点击。快速信息,身体有。快速信息可见。可能是什么问题?可能是选错了?
更新1
基于Raminson的回答
jQuery('body>*:not(.squick info)')。点击(函数(e){var container=jQuery(".wicket info");if(container.has(e.target).length===0&&e.target.nodeName!='A'){jQuery(".squick info").hide();}});
因此,只选择>一个选择器。
e.target.nodeName!='A'表示链接,该链接将打开此窗口。我知道,我可以在那里上课什么的。
或者:
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 post hasClass()更喜欢is()
我在尝试让"点击外部"逻辑工作时遇到了很多问题。我看到了这个插件:http://benalman.com/projects/jquery-outside-events-plugin/为我解决了所有问题。您只需将事件绑定到元素上。你可以试一试,即使我看到你已经解决了自己的问题。
尝试以下操作:
$(document).on("click", function(e) {
if (!$(e.target).hasClass("quick-info") && $('.quick-info').is(':visible')) {
$(".quick-info").hide();
}
});
演示
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 为什么我的控制器没有启动函数.js脚本
- 我的html表单无法验证.请参阅代码片段中的html代码和java脚本
- 为什么我的javascript脚本在页面加载时运行,而不是使用onclick
- 何时可以;我的用户脚本在Javascript中触发右键单击(上下文菜单)
- 我如何让我的脚本连续提交两个表单
- 不同'单击'不同脚本中的回调:我可以控制执行顺序吗
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- 为什么当我需要位于顶部的函数时,在脚本中的某些点上没有定义函数
- 我的脚本不起作用
- 我可以把这个脚本放在我的内容上面吗
- 为什么我的脚本正在运行动画,但没有显示它
- 有没有一种方法可以生成Braintree令牌,而不必向我的服务器添加PHP脚本
- 我的代码在<脚本>标记,但没有'不能在外部文件中工作
- 脚本在我的引导模式中不起作用
- 我如何才能在点击按钮时将我的数字和财富显示在这个脚本上
- 如何在我的情况下创建加载脚本
- 火虫找到隐藏我的元素的脚本
- 为什么我的JavaScript / JSON脚本不能在Internet Explorer中工作
- 使用我的基于标签的平滑滚动脚本而不带“a”的解决方案