使用jQuery UI switchClass方法一次更改13个元素的类?

时间:2013-08-16 02:27:17

标签: jquery jquery-ui setinterval

我在定义candidate

的所有元素上有13个不同的元素和以下类

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

can1can2can3can4can5can6can7can8can9can10can11can12can13

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

can1变为can13 can2成为can1 can3成为can2 等等......一直到can13可以成为can12

在课堂改变期间,它也需要为该课程设置动画,所以我认为我需要switchClass才能完成此任务。但究竟这样做的最佳和最有效的方法是什么?

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

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

但我现在因为上课和改成新班而搞砸了,所以我该怎么做?

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

我如何利用这个优势并每5秒减少can类的最后一个数值?所以我注意到switchClass方法可以将queue选项设置为false,这可能是我想要的,但同样,如何将它用于此目的?我希望switchClass

的动画能像500毫秒

我是否必须对此进行.each()

1 个答案:

答案 0 :(得分: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/