¿Cómo puedo hacer una función una vez que se ha completado toggleClass? He intentado lo siguiente, pero sin suerte:jquery function on toggleClass complete?
$("#loader").toggleClass('fadeOut', function() {
alert('a');
});
¿Cómo puedo hacer una función una vez que se ha completado toggleClass? He intentado lo siguiente, pero sin suerte:jquery function on toggleClass complete?
$("#loader").toggleClass('fadeOut', function() {
alert('a');
});
El método jQuery tiene promesa de que devuelve un objeto diferido que se puede acceder utilizando .promise()
. Este objeto prometedor se resolverá después de que se completen todas las animaciones en ejecución en los elementos seleccionados. En ese punto, puedes enlazar a su método hecho.
$("#loader").toggleClass('fadeOut',600).promise().done(function(){
alert('a');
});
:) +1 para usar objetos diferidos. –
Esta solución requiere jQuery UI. – Aryo
sin jquery ui no sería una animación, y por lo tanto no tendría una devolución de llamada. ¿tu punto? –
toggleClass
se ejecuta inmediatamente y por lo que no necesita una llamada de retorno para toggleClass
, basta con colocar el alert('a')
en la línea siguiente que alertará después de la ejecución toggleClass
.
Editar: Parece que quiere jQuery UI Effects - toggleClass
que lamentablemente no tiene una función de devolución de llamada.
Probablemente deba escribir su propia función de alternar. Véase más abajo para fadeIn/fadeOut palanca,
var $loader = $("#loader");
if ($loader.is(':visible')) {
$loader.fadeOut(100, function() {
alert('fade out complete');
});
} else {
$loader.fadeIn(100, function() {
alert('fadeIn complete');
});
}
Estoy tratando de obtener $ ("# loader") para ocultar() después de que se desvaneció, ¿cómo puedo hacer esto? - – panthro
@ user1013512 Parece que toggleClass en los efectos de jQuery UI no tiene una devolución de llamada. Mira mi publicación actualizada y avísame si eso te funciona. –
@Vega hace '.toggleClass()' dar un objeto diferido? intente '.toggleClass(). promise(). done (function() {alert (" done ")});' La mayoría de los métodos de animación devuelven un objeto diferido. –
$("#loader").stop().fadeTo(400,0, function() {
$(this).toggleClass('fadeOut').hide(); // exec after is faded out.
alert(' ta-da!');
});
que utiliza otro método para hacer frente a este problema. En este ejemplo he combinado .delay()
función y .queue()
$(this).toggleClass("focus_out").delay(500).queue(function(custom_call_back) {
$(this).removeClass('focus_out');
custom_call_back();
});
En su situación $(this)
podría ser $('#loader')
clase de palanca es inmediato y no necesita una llamada de retorno para toggleClass, simplemente coloque 'alert ('a')' en la siguiente línea que alertará después de toggleClass –
estoy tratando de obtener $ ("# loader") para ocultar() después de que se desvaneció, ¿cómo puedo hacer esto? – panthro
Estoy tratando de obtener $ ("# loader") para ocultar() después de que se desvaneció, ¿cómo puedo hacer esto? - – panthro