如何每4秒在jquery中添加和删除一个类

出于某种原因,这不是每4秒在post类上添加和删除一个新类。 jquery正确加载,就像这样。 chrome显示代码没有错误。

$(document).ready(function(){ $('.post').addClass('display').delay(4000).removeClass('display'); }); 

既然你列出了你想要每4秒发生一次,你可以简单地使用setInterval()

 var $post = $(".post"); setInterval(function(){ $post.toggleClass("display"); }, 4000); 

注意 ,选择器缓存在$post以最小化DOM在每个间隔上查询所需的次数。

关于jsfiddle的例子

假设你想在四秒后切换类名:

 setTimeout(function(){ $('.post').toggleClass('display'); },4000); 

JS小提琴演示 。

为了四秒钟切换一次 (虽然@Mark已经发布了一个setInterval选项,而我将其添加到我的post中。…我要离开它了,但我承认Mark先得到了它):

 setInterval(function(){ $('.post').toggleClass('display'); },4000); 

JS小提琴演示 。

参考文献:

  • setInterval
  • setTimeout
  • toggleClass()

.delay仅适用于其他动画方法,而不适用于addClassremoveClass 。 试试这个:

 $('.post').addClass('display'); setTimeout(function(){ $('.post').removeClass('display'); },4000); 

如果您希望继续添加和删除,则需要获得更多创意。 您可以使用setInterval和8000毫秒的延迟,但这也会延迟第一个addClass 。 另一种方法是使用嵌套的setTimeouts和递归函数调用(以及toggleClass来缩短代码):

 function addRemoveClass() { var delay = 4000; // milliseconds setTimeout(function() { $('.post').toggleClass('display'); addRemoveClass(); }, delay); }; addRemoveClass(); 

http://jsfiddle.net/mblase75/jU8cj/

(将其设置为1000毫秒并将.display设置为透明, – 你刚刚重新发明了blink标签 。)

我想你想要更像的东西:

 $(document).ready(function(){ setInterval(addRemoveClass,4000); }); function addRemoveClass() { $('.post').toggleClass('display'); } 

您只能在jQuery中使用queue d操作的delay 。 幸运的是,将一个项添加到队列中相对简单:

 $(selector).delay(duration).queue(function (next) { $(this).doStuff(); doOtherStuff(); next(); }); 

提供给函数的参数是一个告诉队列继续的函数,以防您想要执行异步操作,例如使用$.ajax

要获得循环,只需重新排队排队的函数:

 jQuery(function ($) { "use strict"; function toggleDisplayClass(next) { $(this).toggleClass('display') //toggles the class .delay(4000) //waits 4 seconds .queue(toggleDisplayClass); //requeued next(); //continues on the queue } $('.post').queue(toggleDisplayClass); }); 

你可以在我更新的小提琴上看到这个。

像这样的东西:

 jQuery(document).ready(function($) { // ready var refresh=function(){ $('.post').toggleClass('display'); //switch }//end refresh setInterval(refresh,4000); }); 

.delay()只会延迟动画,而不是函数。 您可以使用JavaScript的本机setTimeout方法。

 function toggleDisplay() { $('.post').toggleClass("display"); setTimeout(function(){ toggleDisplay(); },'1000'); } toggleDisplay();