Sono sicuro di aver letto di questo l'altro giorno ma non riesco a trovarlo da nessuna parte.
Ho un evento fadeOut()
dopo di che posso rimuovere l'elemento, ma jQuery è la rimozione dell'elemento prima che abbia la possibilità di terminare la dissolvenza in chiusura.
Come posso ottenere jQuery per attendere che l'elemento si era sbiadito, poi rimuoverlo?Come ottenere jQuery per attendere fino al termine di un effetto?
risposta
È possibile specificare una funzione di callback:
$(selector).fadeOut('slow', function() {
// will be called when the element finishes fading out
// if selector matches multiple elements it will be called once for each
});
se è qualcosa che si desidera cambiare, sbiadire uno e sbiadire un altro nello stesso punto, è possibile posizionare un attributo {position: absolute} sulle div, in modo che entrambe le animazioni si giochino l'una sull'altra e non devi aspettare che un'animazione finisca prima di iniziare il prossimo.
Con jQuery 1.6 versione è possibile utilizzare il metodo .promise()
.
$(selector).fadeOut('slow');
$(selector).promise().done(function(){
// will be called when all the animations on the queue finish
});
Questo è ridondante per la maggior parte delle animazioni jQuery dato che ci sono discussioni di callback sulla maggior parte dei metodi, ma usando 'promise()' o 'when()' e 'done()' puoi sfruttare un comportamento molto interessante da metodi di terze parti, o anche i tuoi. +1 per la mediazione di '.promise()'! – stuartc
Ottima soluzione! –
Non ho sentito prima, mi sono appena salvato il sedere. – prismspecs
È possibile anche utilizzare $.when()
aspettare fino alla promise
finito:
var myEvent = function() {
$(selector).fadeOut('fast');
};
$.when(myEvent()).done(function() {
console.log('Task finished.');
});
Nel caso in cui si sta facendo una richiesta che potrebbe pure fallire, allora si può anche fare un passo avanti:
$.when(myEvent())
.done(function(d) {
console.log(d, 'Task done.');
})
.fail(function(err) {
console.log(err, 'Task failed.');
})
// Runs always
.then(function(data, textStatus, jqXHR) {
console.log(jqXHR.status, textStatus, 'Status 200/"OK"?');
});
Questa parte di questa risposta che usa '$ .when()' non funziona perché 'myEvent()' non restituisce una promessa e '$.quando() 'si aspetta che tu gli passi una o più promesse perché faccia il suo lavoro. – jfriend00
- 1. Attendere fino al termine Application.Calculate
- 2. QML: attendere fino al termine delle animazioni
- 3. Caricamento griglia utilizzando le coroutine - attendere fino al termine,
- 4. Eseguire un'applicazione con PowerShell e attendere fino al termine
- 5. Come aspettare fino al termine dell'animazione matplotlib?
- 6. Come posso avviare un nuovo processo e attendere fino al termine?
- 7. Come selezionare un listener di eventi che mi consentirà di attendere fino al termine di async.times per eseguire una funzione
- 8. Come posso attendere fino al completamento di Parallel.ForEach
- 9. Come attendere un effetto di dissolvenza e quindi rimuovere l'elemento?
- 10. La sequenza SKAction in realtà attende fino al termine dell'azione?
- 11. jquery differita - attendere fino a due chiamate completa
- 12. Come forzare un programma ad attendere fino al completamento di una richiesta HTTP in JavaScript?
- 13. Come attendere fino Task.ContinueWith compito interiore finisce
- 14. Attendere fino a quando le modifiche CSS (ridimensionamento) hanno avuto effetto prima di continuare lo script
- 15. jquery come fare un effetto di vibrazione?
- 16. È necessario avviare il processo agente e attendere fino al completamento e ottenere esito positivo o negativo
- 17. Durante lo sviluppo, come posso bloccare il caricamento della pagina fino al termine di watchify?
- 18. Attendere fino a quando un accumulo Jenkins è completo
- 19. Come continuare a mostrare la schermata iniziale fino al termine del caricamento di Webview. objective-c
- 20. Come posso attendere fino al completamento di un'animazione incorporata di UITableView?
- 21. Come posso ottenere questo effetto flash usando jQuery?
- 22. Come attendere fino Sede del gestore di ottenere elevati dati accurati
- 23. Come avviare un file eseguibile al termine dell'installazione correttamente?
- 24. prologo ottenere un termine da un composto
- 25. jquery attendere più eventi completi
- 26. Foreach callback al termine
- 27. thread Android attendere fino a visibile
- 28. Come attendere fino alla nidificazione asincrona jQuery Le richieste AJAX sono finite?
- 29. Come attendere da thread1 fino a quando notificato da thread2
- 30. Come ottenere questo effetto dissolvenza e scorrimento?
Bingo. Ho pensato che fosse così, ma quello che dovevo fare era mettere la mia intera funzione lì dentro non solo la parte rimossa. Post scriptum Se qualcuno è interessato, il libro che ho letto e che ho trovato di nuovo è Learning JQuery - Better Interaction and Design. Grazie ancora – uriDium
Se qualcuno ha vecchio jQuery, allora questo "callback animazione fatto" bug è stato un brutto uno: http://bugs.jquery.com/ticket/5684 – JustAMartin
Qui va il tuo numero di upvote 100 – kaiser