jquery - 仅在当前 div 中触发事件
问题描述
我有多个带有“信息”按钮的框,每个框都可以切换带有描述的模式,但是当我单击一个按钮时,它会同时触发所有模式,而不是仅显示当前框中的模式。任何人都可以帮我弄清楚吗?
这是我的代码:
$('.info-btn').click(function () {
$('.modal').toggleClass('open');
});
.box{ color:#341f12; background-color: #EFEFEF; padding:20px; margin:20px }
.modal{opacity:0}
.open{opacity:1 !important}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box">
Josh...
<button class="info-btn">More info</button>
<div class="modal">modal 1</div>
</div>
<div class="box">
Luca...
<button class="info-btn">More info</button>
<div class="modal">modal 2</div>
</div>
<div class="box">
Kevin...
<button class="info-btn">More info</button>
<div class="modal">modal 3</div>
</div>
解决方案
导航到 .next()
如果您想移动模态,另一种选择:
$(this).closest('.box').find('.modal').toggleClass('open');
$('.info-btn').on('click', function() {
$(this).next('.modal').toggleClass('open');
});
.box {
color: #341f12;
background-color: #EFEFEF;
padding: 20px;
margin: 20px
}
.modal {
opacity: 0
}
.open {
opacity: 1 !important
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box">
Josh...
<button class="info-btn">More info</button>
<div class="modal">modal 1</div>
</div>
<div class="box">
Luca...
<button class="info-btn">More info</button>
<div class="modal">modal 2</div>
</div>
<div class="box">
Kevin...
<button class="info-btn">More info</button>
<div class="modal">modal 3</div>
</div>
没有 jQuery
document.getElementById('container').addEventListener('click', function(e) {
const tgt = e.target;
if (tgt.classList.contains('info-btn')) {
tgt.closest('.box').querySelector('.modal').classList.toggle('open');
}
});
.box {
color: #341f12;
background-color: #EFEFEF;
padding: 20px;
margin: 20px
}
.modal {
opacity: 0
}
.open {
opacity: 1 !important
}
<div id="container">
<div class="box">
Josh...
<button class="info-btn">More info</button>
<div class="modal">modal 1</div>
</div>
<div class="box">
Luca...
<button class="info-btn">More info</button>
<div class="modal">modal 2</div>
</div>
<div class="box">
Kevin...
<button class="info-btn">More info</button>
<div class="modal">modal 3</div>
</div>
</div>
推荐阅读
- kubernetes - Lets Encrypt 使用 Certbot 在 kubernetes 中失败(尽管与 cert-manager 一起使用)
- php - 如何确保它检查输入中是否至少有 30 个字符?
- python - 嵌套的 try-except-finally 没有按预期工作
- apache-kafka - 如果 ISR 小于复制因子并且生产者 ack 设置为 all,生产者将等待多少个 ack?
- rpa - 使用 UI 路径等待上传活动完成的选项
- php - php上传时只保留文本文件的前4行
- python - 如何使用 Python 和 Beautifulsoup 找到网站的图标
- apache-kafka - client.dns.lookup 选项中“use_all_dns_ips”和“resolve_canonical_bootstrap_servers_only”之间的确切区别是什么?
- java - 非法字符:jsp文件中的'\u200c'
- postgresql - 从 postgres 中具有外键约束的表中删除记录