Pare de animação jQuery prematuramente
Pergunta
Estou tentando desaparecer e desaparecer um PNG transparente usando o jQuery. Obviamente, parece liso no Firefox, mas significativamente menor que aceitável no IE (7 e 8). É um bug conhecido com o IE, e infelizmente não parece haver muita solução alternativa.
Basicamente, o que estou fazendo é colocar um retângulo branco semi-transparente sobre uma imagem para fazer a imagem aparecer 'no fundo'. Eu quero fazer isso suavemente, e é aí que o Fadein entra. Por causa do bug do IE, no entanto, fui forçado a desaparecer um retângulo branco completamente opaco sobre a imagem, fazendo com que ela desapareça. Embora isso pareça significativamente melhor e seja quase o que estou procurando, ainda não é aceitável. O usuário precisa poder ver alguma imagem na página, embora em segundo plano.
Então minha pergunta é a seguinte:
Existe uma maneira de interromper a função Fadein (ou qualquer animação jQuery, realmente) depois de animar por 75% do tempo esperado de animação?
Isso deixaria minha imagem 75% misturou o retângulo branco, e eu não precisaria lidar com o desagradável inseto PNG transparente do IE.
Obrigado!
Solução
Você pode usar uma imagem opaca e apenas animar sua opacidade para 75%.
$('#overlay').animate({
opacity: 0.75
}, 5000, function() {
// Animation complete.
});
Outras dicas
Em vez de Fadein/Fadeout, use o animar Funcionar para animar a propriedade Opacity para o nível desejado.
Não é recomendado para a sua situação, mas aqui está a resposta real para sua pergunta, conforme feito :-)
.stop( [ clearQueue ], [ jumpToEnd ] )
Quando .Stop () é chamado em um elemento, a animação atualmente executada (se houver) é interrompida imediatamente. Se, por exemplo, um elemento estiver sendo oculto com .slideup () quando .Stop () for chamado, o elemento ainda será exibido, mas será uma fração de sua altura anterior. As funções de retorno de chamada não são chamadas.