Come posso eseguire una funzione una volta completato un toggleClass? Ho provato quanto segue ma senza fortuna:funzione jquery su toggleClass completata?
$("#loader").toggleClass('fadeOut', function() {
alert('a');
});
Come posso eseguire una funzione una volta completato un toggleClass? Ho provato quanto segue ma senza fortuna:funzione jquery su toggleClass completata?
$("#loader").toggleClass('fadeOut', function() {
alert('a');
});
Il jQuery ha metodo di promessa che restituisce un oggetto differita che è possibile accedere utilizzando .promise()
. Questo oggetto promessa verrà risolto dopo che tutte le animazioni in esecuzione sugli elementi selezionati sono state completate. A quel punto, puoi legare al metodo fatto.
$("#loader").toggleClass('fadeOut',600).promise().done(function(){
alert('a');
});
:) +1 per l'utilizzo dell'oggetto posticipato. –
Questa soluzione richiede l'interfaccia utente jQuery. – Aryo
senza jquery ui non sarebbe un'animazione, e quindi non avrebbe una richiamata. il tuo punto? –
toggleClass
viene eseguito immediatamente e in modo da non avere bisogno di un callback per toggleClass
, è sufficiente posizionare il alert('a')
nella riga successiva che si avverte dopo toggleClass
viene eseguito.
Edit: Sembra che si desidera jQuery UI Effetti - toggleClass
che purtroppo non dispone di una funzione di callback.
Probabilmente dovresti scrivere la tua funzione di commutazione. Vedi sotto per fadeIn/fadeOut ginocchiera,
var $loader = $("#loader");
if ($loader.is(':visible')) {
$loader.fadeOut(100, function() {
alert('fade out complete');
});
} else {
$loader.fadeIn(100, function() {
alert('fadeIn complete');
});
}
sto cercando di ottenere $ ("# loader") per nascondere() dopo la sua dissolvenza, come posso fare questo? - – panthro
@ user1013512 Sembra che toggleClass in effetti dell'interfaccia utente jQuery non abbia una richiamata .. Controlla il mio post aggiornato e fammi sapere se questo funziona per te. –
@Vega fa '.toggleClass()' fornisce un oggetto posticipato? prova '.toggleClass(). promise(). done (function() {alert (" done ")});' La maggior parte dei metodi di animazione, se non tutti, restituiscono un oggetto posticipato. –
$("#loader").stop().fadeTo(400,0, function() {
$(this).toggleClass('fadeOut').hide(); // exec after is faded out.
alert(' ta-da!');
});
ho usato un altro metodo per affrontare questo problema. In questo esempio ho combinato .delay()
funzione e .queue()
$(this).toggleClass("focus_out").delay(500).queue(function(custom_call_back) {
$(this).removeClass('focus_out');
custom_call_back();
});
Nella tua situazione $(this)
potrebbe essere $('#loader')
classe toggle è immediato e non hai bisogno di un callback per toggleClass, basta posizionare l'avviso ('a') 'nella riga successiva che avviserà dopo toggleClass –
im cercando di ottenere $ (" # loader ") per nascondere() dopo la sua dissolvenza, come posso fare questo? – panthro
sto cercando di ottenere $ ("# loader") per nascondere() dopo la sua dissolvenza, come posso fare questo? - – panthro