2011-04-07 9 views
5

el div ajax cargado a continuación es "display: none" y su posición se configurará correctamente solo, ¡cuando el estilo de visualización no sea ninguno! ¿POR QUÉ? ¿Hay alguna solución? Estoy agradecido por cualquier consejo ...configuración jQuery .offset(); mientras que "display: none;" da como resultado otros valores superiores e izquierdos que con "display: block;"

function setTwPopup(x,y){ 
    $.ajax({ 
     url: "twPopup.html", 
     async : false, 
     success: function(result){ 
      $('body').append(result); 
     } 
    }); 
    var popUp = $('.twPopup'); 
    var x = x-71; 
    var y = y-342; 
    popUp.offset({'top': y, 'left': x}); 
    //popUp.draggable({ handle: popUp }); 
    //popUp.fadeIn(400); 
} 

Editar: Una solución con la configuración de la opacidad a 0 en lugar de display: none no es bueno, porque necesito el .fadeIn() y después ... fadeIn se desvanecerá al setet bevore

+0

¿Ha establecido algún posicionamiento absoluto/relativo en el div (y su principal)? –

Respuesta

4

¿Qué tal esto:

function showThatDiv() { 
    thatDiv.css({ 
     display: 'block', 
     opacity: 0 
    }); 
    // calculate x and y HERE 
    thatDiv.css({ 
     left: x, 
     top: y 
    }).fadeIn("slow"); 
} 
+1

thx .. cuando se utiliza .css en lugar de offset, ¡funciona perfectamente! – haemse

+0

Gracias perfecto. – Deckard

6

Si un elemento está ajustado en: posición "pantalla ninguno", no se puede establecer, anchura o altura, elementos tiene que ser visible para el cálculo. Aunque incluya, se puede establecer:

visibility: hidden; 

O

position: absolute; 
left: -99999px; 

espero que ayude!

+0

con altura de css y superior en lugar del método de desplazamiento funciona ... – haemse

Cuestiones relacionadas