jquery - 如果单击容器和按钮以外的任何内容,则 jquery 关闭容器
问题描述
我有一个按钮和组,当单击按钮时,组应该显示,当单击组以外的任何内容时,组应该关闭。我下面的代码不起作用
<body>
<div id="btn" class="control">
<div id="group" class"control">
</body>
$("#btn").click(function(){
$("#group").toggle();
});
$("body").click(function(evt){
if(!$(evt.target).is(".control")) {
$("#group").hide();
}
我不能将目标设置为#group,因为这会在单击按钮时取消切换。
使用上面的代码,该组显示何时单击按钮,但在单击屏幕上的任何内容时隐藏,包括单击按钮和组的时间。
如何让 jquery 按预期工作?
谢谢
解决方案
Try this code please:
$(document).on('click', function(e) {
var target = $(e.target);
if (target.is('#btn')) {
$(".group").toggleClass('hide');
} else if (target.is('#group')) {
if ($(".group").hasClass('hide')) {
$(".group").removeClass('hide');
}
} else {
$(".group").addClass('hide');
}
})
#btn {
width: 100px;
}
.group {
width: 100px;
height: 100px;
background-color: red;
display: block;
}
.group.hide {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="btn" class="control">Click me</button>
<div id="group" class="group hide"></div>
推荐阅读
- reactjs - 使用 useContext 重新加载页面会丢失 API 数据
- python - 列表弹出和插入在python中非常慢
- css - 如何叠加多个 gif 以在网页上创建深度?
- sql - ORA-00904 标识符无效:但列名有效
- r - 如何在 R 中插入“US$”
- python - 响应 [403] 添加用户代理和其他标头后 Python 请求出错,Cloudfare 阻止访问
- altair - 条件可以同时基于选择和谓词吗?
- pine-script - PinScript 代码帮助。变量定义问题
- python - 如何从 Raspberry Pi 上的串行输入中解析特定数据?
- php - php 缓存 laravel(文件和内存)性能