4

我想每 3 秒更改一次班级名称。但它不起作用。我怎样才能做到这一点?

$(document).ready(function() {
        function moveClass(){
            var x = $('.liveEvents');
            x.removeClass('liveEvents');
            x.addClass('liveEventsActive');
            x.removeClass('liveEventsActive');
            x.addClass('liveEvents');
       }

        setInterval(moveClass, 3000); 
        return false;
    });
4

4 回答 4

10

您可以在一行中完成此操作。使用切换类

setInterval(function(){$('.liveEvents').toggleClass('liveEventsActive')}, 3000);

如果您正确地使用 CSS,则无需删除liveEvents该类。只需让liveEventsActive课程覆盖您需要的内容。

于 2012-02-01T16:22:45.670 回答
4

每次函数运行时,您都在做四件事,这实际上将您带回了开始状态:

  • 删除类liveEvents
  • 添加类liveEventsActive
  • 删除类liveEventsActive
  • 添加类liveEvents

你想打开/关闭这两个类,所以看看这个.toggleClass()函数。您还需要两个选择器,一个选择带有liveEvents类的元素,一个选择带有类的元素liveEventsActive

于 2012-02-01T16:19:50.743 回答
4

使用您的代码,整个函数每 3 秒执行一次。添加/删除类发生在一个块中,您显然看不到差异。

jQuery 有一个.toggleClass()方法,可以相应地添加/删除指定的类:

function moveClass() {
    $('.liveEvents')
        .toggleClass('liveEventsActive');
}

演示

于 2012-02-01T16:23:56.183 回答
1
$(document).ready(function() {
    function moveClass(){
        $( ".liveEvents" ).switchClass( "liveEvents", "liveEventsActive", 1000);
        $( ".liveEventsActive" ).switchClass( "liveEventsActive", "liveEvents", 1000 );
   }

    setInterval(moveClass, 3000); 
    return false;
});

这将使用转换交换您的课程,希望这会有所帮助

于 2012-02-01T16:33:50.947 回答