Una búsqueda rápida en el tema muestra lo siguiente:
jQuery fadeIn/fadeOut IE cleartype glitch
El problema parece ser que el "filtro" atributo CSS no se elimina automáticamente. La solución más sencilla a este problema sería la eliminación de forma manual:
$('#myDiv').fadeIn('slow', function() {
this.style.removeAttribute('filter');
});
A medida que la entrada en el blog anterior explica, esta es una solución bastante desordenado.
Extracto de la entrada del blog, incluyendo una solución limpiador a este problema:
Esto significa que cada vez que quiere desaparecer un elemento, tenemos que quitar el atributo de filtro, que hace que nuestro código parezca desordenado.
Una solución simple, más elegante sería ser para envolver funciones el .fadeIn() y .fadeOut() con una función personalizada a través de la interfaz de complementos de jQuery. El código sería exactamente el mismo , pero en lugar de llamar directamente a las funciones de fundido, llamamos al contenedor . De este modo:
$('#node').customFadeOut('slow', function() {
//no more fiddling with attributes here
});
Así que, ¿cómo se consigue este trabajo? Solo incluye el siguiente código después de que incluya la biblioteca jQuery para la funcionalidad agregada .
(function($) {
$.fn.customFadeIn = function(speed, callback) {
$(this).fadeIn(speed, function() {
if(jQuery.browser.msie)
$(this).get(0).style.removeAttribute('filter');
if(callback != undefined)
callback();
});
};
$.fn.customFadeOut = function(speed, callback) {
$(this).fadeOut(speed, function() {
if(jQuery.browser.msie)
$(this).get(0).style.removeAttribute('filter');
if(callback != undefined)
callback();
});
};
})(jQuery);
grr ¿Por qué no pueden poner esto en el fadeIn estándar? Acabo de confirmar que no está en 1.3.1 (al menos no sin requerir configuración adicional) así que probablemente no haya –
, incluso con esta solución todavía se ve bastante horrible en mi opinión. es evidente que hay un problema. Lo mejor es intentar lo más posible para desvanecerse en cuadros de colores y dejar que el texto aparezca instantáneamente –
A partir de jQuery 1.9, el identificador jQuery.browser está en desuso. Impresionante ... :-(¿Alguna sugerencia de cómo implementar el código anterior a través de "detección de características" en lugar de "detección de navegador"? – ClearCloud8