javascript - 循环遍历 div 内的 span
问题描述
我希望能够单击一个 div 并让它在 div 内的跨度中循环。我可以让它与下面的代码一起工作,但我想在一个页面上让其中几个独立工作(所以他们只循环通过他们自己的孩子)。单击应该推进两个文本幻灯片,但具有独立的内容。
$(document).ready(function() {
var divs = $('.timezones span').hide(),
i = 0;
function cycle() {
divs.fadeOut(0).eq(i).fadeIn(0);
i = ++i % divs.length;
};
cycle()
$('.timezones').click(function() {
cycle()
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="timezones">
<span>9am PDT</span>
<span>10am MDT</span>
<span>11am CDT</span>
<span>12pm EST</span>
</div>
<div class="timezones">
<span>5pm PDT</span>
<span>6pm MDT</span>
<span>7pm CDT</span>
<span>8pm EST</span>
</div>
解决方案
我通常不必存储索引变量,而是在当前父容器中查找活动变量并使用next()
. 当活动的下一个不存在时,您将恢复到first()
就像是:
$(document).ready(function() {
function cycle() {
// `this` is the .timezone element event occurred on
var $spans = $(this).children(),
$active = $spans.filter(':visible'),
$next = $active.next().length ? $active.next() : $spans.first();
$active.fadeOut(function() {
$next.fadeIn()
});
}
$('.timezones').click(cycle).find('span:eq(0)').show();
});
.timezones span {
display: none
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="timezones">
<span>9am PDT</span>
<span>10am MDT</span>
<span>11am CDT</span>
<span>12pm EST</span>
</div>
<div class="timezones">
<span>5pm PDT</span>
<span>6pm MDT</span>
<span>7pm CDT</span>
<span>8pm EST</span>
</div>
推荐阅读
- android - 添加 bottomAppBar 后在渲染期间引发异常
- android - 是否可以在没有 apk 源代码的情况下添加应用内计费?
- ios - 如何根据 UIImageView 内容改变 NSLayout 约束常量?
- react-native - 向上滑动菜单显示什么?
- google-earth-engine - 如何从 MODIS 图像集中删除具有非数据像素的图像
- sonarqube - SonarQube 扫描仪无法扫描 Kotlin Jacoco 覆盖范围
- java - Java中HashMap中双精度值的问题
- kdb - KDB\Q:如何从一个ticker 函数中运行一个迭代联合连接?
- python - Redis:如何有效地检查空嵌套键
- python - 如何在 sqlalchemy 上捕获特定异常?