Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

474
Vistas
Jquery: difiere la devolución de llamada hasta que se completen varias animaciones

Necesito una devolución de llamada para ejecutar una vez que varios elementos hayan terminado de animarse. Mi selector de jquery es el siguiente:

 $('.buttons').fadeIn('fast',function() { // my callback });

El problema con esto es que la clase de botones coincide con una serie de elementos, todos los cuales deben aparecer antes de que se ejecute la devolución de llamada. Tal como está ahora, la devolución de llamada se ejecuta después de que cada elemento individual haya terminado de animarse. Esta NO es la función deseada. Estoy buscando una solución elegante para que mi devolución de llamada solo se ejecute una vez después de que todos los elementos coincidentes hayan terminado de animarse. Esta pregunta ha aparecido en algunos lugares, incluido SO, pero nunca ha habido una respuesta elegante (ni siquiera una respuesta definitiva; las soluciones que funcionan para una persona no funcionan en absoluto para otras).

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

jQuery introdujo una promesa en la versión 1.6 y es mucho más elegante que agregar contadores.

Ejemplo:

 // Step 1: Make your animation $(".buttons").each(function() { $(this).fadeIn("fast"); }); // Step 2: Attach a promise to be called once animation is complete $(".buttons").promise().done(function() { // my callback });
over 4 years ago · Santiago Trujillo Denunciar

0

Para recopilar animaciones de elementos no relacionados en una sola devolución de llamada, puede hacer esto:

 $.when( $someElement.animate(...).promise(), $someOtherElement.animate(...).promise() ).done(function() { console.log("Both animations complete"); });
over 4 years ago · Santiago Trujillo Denunciar

0

Una alternativa a la respuesta de @Ross que siempre activará la devolución de llamada en el último botón para aparecer gradualmente (que puede o no ser el último botón al que se le indicó animar) podría ser:

 var buttons = $(".buttons"); var numbuttons = buttons.length; var i = 0; buttons.fadeIn('fast', function() { i++; if(i == numbuttons) { //do your callback stuff } });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda