2012-02-01 75 views
4

我想每3秒更改一次类名。它不起作用。我怎样才能做到这一点?jquery addClass和removeClass with setInterval

$(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; 
    }); 

回答

9

你可以在一行中做到这一点。使用toggleClass

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

如果你正确地做你的CSS,你并不需要删除liveEvents类。只需使liveEventsActive类覆盖您所需的内容即可。

+0

我认为这将切换liveEventsActive类,而不是liveEvents,我错了 – 2012-02-01 16:35:58

+0

你是对的,但在“liveEventsActive”类中有适当的CSS声明,你不需要。 – 2012-02-01 16:37:20

+0

非常感谢您的信息。 – 2012-02-01 16:43:29

4

你做的每一个功能运行时,基本上可以回到你的启动状态的四件事:

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

要打开/关闭这两个类,请查看.toggleClass()函数。您还需要两个选择器,一个选择liveEvents类的元素,另一个选择liveEventsActive类的元素。

+0

非常感谢您的信息。 – 2012-02-01 16:33:47

4

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

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

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

DEMO

+0

非常感谢您的信息。 – 2012-02-01 16:45:00

1
$(document).ready(function() { 
    function moveClass(){ 
     $(".liveEvents").switchClass("liveEvents", "liveEventsActive", 1000); 
     $(".liveEventsActive").switchClass("liveEventsActive", "liveEvents", 1000); 
    } 

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

这将交换使用转换你的类,希望这将有助于