Un altro lato di ritardo(): sembra di disabilitare la possibilità di nascondere (o fadeOut, ecc.) l'oggetto viene ritardato fino al termine del ritardo.
Per esempio, ho creato il seguente codice (forse uno sviluppatore StackOverflow riconoscerà i nomi CSS ....) per nascondere un 'div':
$j(document).ready(function(){
var $messageDiv = $j("<div>").addClass('fading_message')
.text("my alert message here").hide();
var $closeSpan = $j("<span>").addClass('notify_close').text("x");
$closeSpan.click(function() {$j(this).parent().slideUp(400);});
$messageDiv.append($closeSpan);
$j('.content_wrapper_div').prepend($messageDiv);
$messageDiv.fadeTo(500, .9).delay(5000).fadeTo(800,0);
});
clic sulla "X" che è nel span (che è nel 'div') ha sparato la funzione click (ho provato con un avviso in là), ma il div non ha fatto lo slideUp come indicato. Tuttavia, se sostituisco l'ultima linea con questo:
$messageDiv.fadeTo(500, .9);
..quindi ha funzionato - quando ho cliccato il "x", il circostante div slideUp ed e lontano. Sembra come se lo sfondo in esecuzione della funzione "delay()" sul $ messageDiv "bloccasse" quell'oggetto, in modo che un meccanismo separato che cercava di chiuderlo non potesse farlo fino a che il ritardo non fosse stato completato.
... O quando si desidera poter annullare il ritardo. – sdleihssirhc
Tieni presente che non è possibile annullare un ritardo, se per qualche motivo si desidera far avanzare l'animazione, ma è possibile con setTimeout. – blackhawk