有没有一种方法可以延迟jQuery的addClass()
函数呢?例如这段代码:
$('#sampleID').delay(2000).fadeOut(500).delay(2000).addClass('aNewClass');
当我加载页面时,id为'sampleID'的元素上已经有了'class aNewClass'。如何解决这个问题?我想要的是在fadeOut()
结束后再添加'class aNewClass'。$(this).delay(2000).queue(function(){$(this).addClass('aNewClass')});
我想要的是,在完成 fadeOut() 后再执行 addClass。
您可以像这样使用回调函数来调用fadeOut
:
$('#sampleID').fadeOut(500, function(){
$(this).addClass('aNewClass');
});
使用delay
无法做到这一点,因为它只影响效果队列。如果后续代码没有使用队列实现,则不会“暂停”执行。
您需要使用setTimeout
来实现:
$('#sampleID').delay(2000).fadeOut(500, function() {
setTimeout(function() {
$(this).addClass('aNewClass');
}, 2000);
});
这里使用了fadeOut
的complete
回调函数,然后设置一个在未来2秒执行的函数。
您也可以使用CSS过渡和setTimeout函数:
setTimeout(function() {
$('#sampleID').addClass('aNewClass');
}, 2000);
和 CSS 相关
#sampleID {
transition: opacity 1s ease;
opacity: 0;
}
#sampleID.aNewClass {
opacity: 1;
}
你应该使用回调函数。
$('#sampleID').delay(2000).fadeOut(500,function(){
$(this).delay(2000).addClass('aNewClass');
});
delay
调用。 - lonesomeday