【发布时间】:2018-04-13 00:54:32
【问题描述】:
我想我正在与一个错误作斗争。我在 jquery 中构建了一个小旋转木马。更多的是一些相互堆叠的框,当我的用户单击下一个和上一个箭头时,它们会改变它们的 z-index (jquery.css)。到目前为止一切顺利,carousel 与 owl-carousel 相连,但它是独立的。每个盒子都有一个类,我存储在一个数组中,然后用 jquery 循环。问题如下:
jquery:
$(document).ready(function () {
var carousel = $('.covercarousel');
var carouselnum = carousel.length;
var i = 0;
$('.owl-next').click(function () {
i++;
$(carousel).css('zIndex', '0');
$(carousel[i]).css('zIndex', '2');
if (i == (carouselnum-1)) {
$(carousel).css('zIndex', '2');
i = -1;
}
});
$('.owl-prev').click(function () {
i--;
$(carousel).css('zIndex', '0');
$(carousel[i]).css('zIndex', '2');
if (i < 0) {
i = carouselnum-1;
$(carousel[5]).css('z-index', '2');
$(carousel).css('zIndex', '0');
}
});
});
HTML:
<div class="covercarouselbox">
<div class="covercarousel">
<div>
a
</div>
</div>
<div class="covercarousel">
<div>
b
</div>
</div>
<div class="covercarousel">
<div>
c
</div>
</div>
<div class="covercarousel">
<div>
d
</div>
</div>
<div class="covercarousel">
<div>
e
</div>
</div>
<div class="covercarousel">
<div>
f
</div>
</div>
</div>
当您滚动到下一个 div 时,轮播可以正常工作。如果您通过控制台记录 (i),您会注意到计数从 0 到 4 工作正常(数组中有 6 个元素,我给第一个元素一个 z-index 2 和 css => covercarousel:nth-child (1) {z-index=2} ),因此当到达数组中的第五个元素时,分配给 i 的值为 -1,因此计数返回 0 (i++)。
但是当你做相反的事情时,它会刹车:第一个值是 0,所以当你按 prev 箭头将 -1 添加到数组时,然后你尝试滚动到下一张幻灯片,在里面添加一个 +1 i 出于某种原因,如果您在控制台记录 (i) 的值,结果将是 5,然后它会继续增长。有什么办法可以防止这种行为?
【问题讨论】:
标签: jquery arrays loops init variable-length-array