A ver, otro problema, esta vez, como no, con IE...
 
El código ha quedado así:  
Código:
 var $disp 	= $('#pf-display'),
	pf 	= $(this).attr('id'),
	dir 	= './portfolio.html #display-' + pf;
if($disp.is(':visible')){
	$disp.slideUp(400); // Ocultar el anterior si es visible
	// Si haces click sobre uno distinto al actual. Cargar los detalles
	if(pf !== 'pf3' && !$disp.find('div#display-' + pf).length){
		setTimeout(function(){
			$disp.load(dir);
			$disp.slideDown(600, 'swing');
		}, 400);
	}
}
else if(pf !== 'pf3'){
	$disp.load(dir, function(){
		$disp.slideDown(600, 'swing');
	});
}
  Eso es el evento click, no le hagáis caso a lo de pf3 porque es de una capa que tengo provisional e ira fuera a poder ser pronto. Asi que seria eso sin las comprobaciones de esa capa. 
El problema es que en IE no funciona, en el 9 le doy y se queda ahi tonto, para que me muestre algo tengo que abrir las herramientas de desarrollo (F12) y aparece del tirón, sin animación ni nada. En IE7 y 8 hace como si se abriera la capa pero no se ve nada, como si fuera una capa transparente del triple del tamaño real de esa capa. 
Estoy harto de buscar y no encuentro nada. Algún fallo para IE7 como que la capa tiene que ser relative y añadir 'zoom: 1', pero que va. Indicar la altura de la capa, que es dinámica y no lo tiene. Pero nada, no hay manera. No se si es el .load u otra cosa o la animación. 
¿Alguna sugerencia? 
Gracias. 
EDIT: edito para comentar que no es del load, o al menos no al 100%. He probado con una capa de contenido fijo y no hay animación, simplemente aparece y desaparece de golpe, como si fuera show y hide en vez de slideUp/Down. Eso si, hay un tiempo como de espera. Como si estuviese haciendo la animación pero no la hace.