javascript - 显示/隐藏错误 div 功能检测 I 标记为 div
问题描述
我正在尝试创建一个<div>
在单击<i>
标签时显示和隐藏的功能,但是<i>
标签本身被检测为 div,因此它会留下一个空白区域并且看起来很糟糕,有人知道如何解决这个问题吗?
function updateItems(tgt, delta) {
var $items = $(tgt).closest("div").children();
var $current = $items.filter('.current');
$current = $current.length ? $current : $items.first();
var index = $current.index() + delta;
// Range check the new index
index = (index < 0) ? 0 : ((index > $items.length) ? $items.length : index);
$current.removeClass('current');
$current = $items.eq(index).addClass('current');
// Hide/show the next/prev
$(".prev").toggle(!$current.is($items.first()));
$(".next").toggle(!$current.is($items.last()));
}
$(".next").click(function(e) {
updateItems(e.target, 1);
});
$(".prev").click(function(e) {
updateItems(e.target, -1);
});
// Cause initial selection
$(".group").each(function() {
updateItems(this, 0)
});
.current{
background-color:#aaa;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/fontawesome.min.css" rel="stylesheet"/>
<link href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/solid.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js"></script>
<div class="container-fluid padding adungcontent">
<div class="row padding">
<div class="col-lg-4 text-center reveal">
<img src="img/agunglogo.png" alt="Agung logo" class="img-fluid" alt="Responsive image">
</div>
<div class="col-lg-8 text-justify reveal group">
<div>
<p>Test
</p>
</div>
<div>
<h2>Vision</h2>
<h2>Mission</h2>
</div>
<div>
<h2>Achievements</h2>
</div>
<div>
<h2 class="text-center">Values</h2>
</div>
<section>
<i class="fas fa-angle-right next"></i>
<i class="fas fa-angle-left prev"></i>
</section>
</div>
</div>
</div>
解决方案
问题不在于<i>
元素被检测为 div,而是您正在选择父元素<div>
,closest()
然后选择它的所有子元素children()
,其中包括<i>
.
function updateItems(tgt, delta) {
var $items = $(tgt).closest("div").find("div");
var $current = $items.filter('.current');
$current = $current.length ? $current : $items.first();
var index = $current.index() + delta;
// Range check the new index
index = (index < 0) ? 0 : ((index > $items.length) ? $items.length : index);
$current.removeClass('current');
$current = $items.eq(index).addClass('current');
// Hide/show the next/prev
$(".prev").toggle(!$current.is($items.first()));
$(".next").toggle(!$current.is($items.last()));
}
$(".next").click(function(e) {
updateItems(e.target, 1);
});
$(".prev").click(function(e) {
updateItems(e.target, -1);
});
// Cause initial selection
$(".group").each(function() {
updateItems(this, 0)
});
.current{
background-color:#aaa;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/fontawesome.min.css" rel="stylesheet"/>
<link href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/solid.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js"></script>
<div class="container-fluid padding adungcontent">
<div class="row padding">
<div class="col-lg-4 text-center reveal">
<img src="img/agunglogo.png" alt="Agung logo" class="img-fluid" alt="Responsive image">
</div>
<div class="col-lg-8 text-justify reveal group">
<div>
<p>Test
</p>
</div>
<div>
<h2>Vision</h2>
<h2>Mission</h2>
</div>
<div>
<h2>Achievements</h2>
</div>
<div>
<h2 class="text-center">Values</h2>
</div>
<section>
<i class="fas fa-angle-right next"></i>
<i class="fas fa-angle-left prev"></i>
</section>
</div>
</div>
</div>
推荐阅读
- git - git 显示两次提交之间函数的修改
- autodesk-forge - 将 rvt 转换为 dwg 作业进度保持 0%
- sql-server - 为什么在数据库中自动创建临时表
- python - 从 PySpark 中的类别分布中查找值的百分位数
- c# - 即使期望集,TestDbSet 也返回 Null
- c# - 在 Xamarin 窗体中加载视图内容时显示活动指示器
- c++ - 如何在 Mac 的 Clion 上设置 OpenCV?
- c# - 如何将 API 路由的参数传递给属性验证
- javascript - 在同一页面上使用 Highstock 和 Highchart-Gantt
- javascript - 无法在javascript中将当前时间设置为音频元素