我有3个div元素,类名gridbox
我想在延迟的所有3个元素中添加一个类。
例如:
新类应添加到所有3个div元素中,每个元素之间有延迟。
我跟踪代码无效。
$('.gridbox').addClass('animation').delay(1500);
这里有什么问题?
答案 0 :(得分:3)
您可以尝试这样的事情:
var divs = $( '.gridbox' );
var index = 0;
var delay = setInterval( function(){
if ( index <= divs.length ){
$( divs[ index ] ).addClass( 'animation' );
index += 1;
}else{
clearInterval( delay );
}
}, 1500 );
我在这里做的是:
divs
变量中。setTimeout
功能,延迟时间为1.5秒。答案 1 :(得分:3)
$('.gridbox').each(function(i) {
(function(self, j) {
setTimeout(function() {
$(self).addClass('animation');
},(j*1500)+1500);
})(this, i);
});
答案 2 :(得分:0)
您可以尝试.each()和setTimeout
$('.gridbox').each(function (index) {
var $this = $(this);
setTimeout(function () {
$this.addClass('animation');
}, 1500 * index );
});
答案 3 :(得分:0)
$('.gridbox').each(function(index) {
var that = this;
setTimeout(function() {
$(that).addClass('animation');
}, 1500 * index);
});
答案 4 :(得分:0)
如果你想在jquery函数(如addClass)上应用延迟,你需要使用javascript setTimeout,因为所描述的here .delay()
是有限的,应该用于jQuery效果
答案 5 :(得分:0)
更好的解决方案:)
var st = setInterval(function(){
var gb = $('.gridbox:not(.animation):eq(0)');
gb.length > 0 ? gb.addClass('animation') : clearInterval(st);
},1500)
答案 6 :(得分:0)
您可以在没有jQuery的情况下执行此操作
function addClass () {
var div = document.getElementsByClassName("aaa");
div[0].className = "bbb";
setTimeout(addClass, 1000);
}
window.onload = function () {
addClass();
}
答案 7 :(得分:0)
虽然setTimeout / Interval有点“工作”,但jquery提供了一种更清晰的自定义动画方式:queue
,例如:
$(".gridbox").each(function() {
var box = this;
$("body").queue(function(next) {
$(box).addClass("animation");
next();
}).delay(1000)
});