这是我的小提琴: http://jsfiddle.net/bzoyc64m/
我想要实现的目标:
我希望图像淡入淡出,现在,它已经完成了一半。最初的淡入淡出很好,但是当谈到第二部分时,它似乎并没有起作用。
所以如果$('.img-' + i + ' .active[rel="1"]')
- 删除活动类并淡出然后淡入下一个img并添加活动类 - 这可行
下一阶段是问题 - 如果$('.img-' + i + ' .active[rel="2"]')
做的完全相同,但对于前一个横幅。 - 这不起作用
这是我的if语句,我认为我做错了。我不知道是什么!!
if($('.img-' + i + ' .active[rel="1"]')) {
console.log("1");
$('.img-' + i + ' .active[rel="1"]').fadeOut().removeClass('active').next('img').fadeIn().addClass('active');
}
else if($('.img-' + i + ' .active[rel="2"]')) {
console.log("2");
$('.img-' + i + ' .active[rel="2"]').fadeOut().removeClass('active').prev('img').fadeIn().addClass('active');
}
另外 - 出于兴趣。我的i
是一个随机数。有没有办法阻止它连续两次成为同一个数字?例如,阻止它做这样的事情:1,2,5,4,4,4,3,3。
感谢您的帮助,非常感谢!
答案 0 :(得分:1)
问题出在你的if语句中。语句if($('.img-' + i + ' .active[rel="1"]')) {}
始终执行。即使$(selector)
与任何DOM元素都不匹配,它也会返回一个空数组,该数组被视为true。
if ([])
alert("Empty array is true");
即使数组为空,也会显示警报。您可以检查jQuery数组的长度:
if($('.img-' + i + ' .active[rel="1"]').length>0) {
...
}
对于问题的第二部分,您可以使用改组算法
How to randomize (shuffle) a JavaScript array?
使用所有索引后,生成一个新的shuffle。你应该注意边界条件。先前shuffle的最后一个数可以等于当前shuffle的第一个数。