如何每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
仅适用于其他动画方法,而不适用于addClass
或removeClass
。 试试这个:
$('.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();