1

我有 13 个不同的元素,所有这些元素都定义了以下类candidate

现在我也为这些相同的元素定义了 13 个不同的类,如下所示:

can1, can2, can3, can4, can5, can6, can7, can8, can9, can10, can11, can12,can13

我需要每 5 秒左右同时同时切换每个元素类一次,但保持candidate对所有元素类的定义,只需要更改can类。而且我需要更改类,以便它们每 5 秒递减 1,除非定义了 can1,否则它将切换到 can13。所以...

can1 变成 can13 can2 变成 can1 can3 变成 can2 依此类推...一直到 can13 变成 can12

在班级更改期间,它也需要为该班级设置动画,所以我想我需要switchClass完成这个。但是,做到这一点的最好和最有效的方法是什么?

可以使用以下方法获取 1 中的所有元素:

$(".candidate").switchClass(... code);

但是我现在对上旧课程和换新课程感到很困惑,那我该怎么做呢?

另外,我data-class在每个元素上定义了一个代表can类的实际 NUMBER。因此,如果该元素的类为can1data-class则其值为1,如果该元素的类为can2,则data-class该元素的值为2,依此类推...

我怎样才能利用这个优势,can每 5 秒递减一次类的最后一个数值?所以我注意到该switchClass方法可以queue设置一个选项,false这可能是我想要的,但同样,如何将它用于此目的?我想要500毫秒的动画switchClass

我必须对此做一个.each()吗?

4

1 回答 1

1

如果类的范围是 0 到 12 而不是 1 到 13,那就更好了。这样您就可以轻松地使用模运算。如果它们必须是 1 到 13,只需在计算模数后进行加法,即nextClassId = (currentClassId % 13) + 1;(但这对我来说似乎更令人困惑)。

setInterval(function() {
   $('.candidate').each(function() {
        var $this = $(this),
            currentClassId =  Number($this.data('class')),
            nextClassId = (currentClassId + 1) % 13;
        $this.switchClass('can' + currentClassId, 'can' + nextClassId);
        $this.data('class', nextClassId);
   });
}, 5000);

工作小提琴,http://jsfiddle.net/7dYXh/

于 2013-08-16T02:43:07.880 回答