Могу ли я отложить jQuery addClass?
есть ли способ задержать addClass()
в jQuery? Например этот код
$('#sampleID').delay(2000).fadeOut(500).delay(2000).addClass('aNewClass');
когда я загружаю страницу, у нее есть класс "aNewClass" уже на id "sampleID". Как решить эту проблему? Я хочу, чтобы addClass произошел после того, как он закончил fadeOut()
.
5 ответов
то, что я хочу, это addClass будет бывает после того, как он закончил fadeOut ().
можно использовать функция обратного вызова fadeOut
такой:
$('#sampleID').fadeOut(500, function(){
$(this).addClass('aNewClass');
});
вы не можете напрямую задерживать вызов addClass, однако вы можете, если вы обернете его в вызов очереди, который принимает функцию в качестве параметра, подобного этому
$(this).delay(2000).queue(function(){$(this).addClass('aNewClass')});
посмотреть этот пост: jQuery: могу ли я вызвать delay() между addClass() и такими?
вы не можете сделать это с помощью delay
потому что он влияет только на очередь эффектов. Он не "приостанавливает" выполнение более позднего кода, если он не реализован с помощью очереди.
вам нужно сделать это с setTimeout
:
$('#sampleID').delay(2000).fadeOut(500, function() {
setTimeout(function() {
$(this).addClass('aNewClass');
}, 2000);
});
использует complete
вызов fadeOut
а затем устанавливает функцию для выполнения 2 секунд в будущем.
вы должны использовать обратные вызовы .
$('#sampleID').delay(2000).fadeOut(500,function(){
$(this).delay(2000).addClass('aNewClass');
});
вы также можете использовать setTimeout, с переходом CSS:
setTimeout(function() {
$('#sampleID').addClass('aNewClass');
}, 2000);
и CSS
#sampleID {
transition: opacity 1s ease;
opacity: 0;
}
#sampleID.aNewClass {
opacity: 1;
}