jQuery - 使用if / else& amp淡出/淡出rel值

时间:2015-05-27 21:28:52

标签: javascript jquery

这是我的小提琴: 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。

感谢您的帮助,非常感谢!

1 个答案:

答案 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?

How can I shuffle an array?

使用所有索引后,生成一个新的shuffle。你应该注意边界条件。先前shuffle的最后一个数可以等于当前shuffle的第一个数。