Ciao,
sto facendo una piccola fotogallery, nella pagina ho l'elenco dei link alle foto:
al click imposto l'attributo html del div e lo mostro al centro della pagina:
codice:
function centerDiv(div){
  var DIVwidth = $(div).width();	
  var DIVheight = $(div).height();
  var SCREENwidth = $(document).width();
  var SCREENheight = $(window).height();
  $(div).css({"position":"absolute","left":(SCREENwidth-DIVwidth)/2+"px","top":(SCREENheight-DIVheight)/2+"px"});
}	

$(document).ready(function(){
  $("a[rel='slide']").click(function(event){
    event.preventDefault();
    $("#popupfoto").html('[img]' + $(this).attr('href') + '[/img]');
    centerDiv('#popupfoto');
    $("#popupfoto").fadeIn("slow");
  });
});
Il problema è che la prima volta che faccio click su un link il div mi appare con lo spigolo in alto a sinistra quasi al centro dello schermo, in pratica come $(div).width() e $(div).height() mi restituisce il valore 24 (dato probabilmente dal border e dal padding del div).

La seconda volta che faccio click sullo stesso link invece funziona correttamente, ed infatti questa volta i valori width e height del div vengono letti correttamente.

Se non ho capito male la prima volta che faccio click sul link non fa in tempo a caricare l'immagine, mentre la seconda volta ce l'ha in cache, e quindi la carica prima di chiamare la funzione centerDiv, come posso fare?

Grazie