2011-04-07 44 views
5

下面的ajax加載div是「display:none」,當顯示風格不是none時,它的位置將被設置正確!爲什麼?有沒有解決方法? 我很感激任何意見...設置jQuery .offset();而「display:none;」導致其他左值和最高值比「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); 
} 

編輯:與設置不透明度爲0,而不是顯示一個解決辦法:沒有不好的,因爲我需要的.fadeIn()之後...和淡入將它淡化到bevore setet

+0

您是否在div(及其父級)上設置了絕對/相對定位? – 2011-04-07 08:44:23

回答

4

如何:

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

thx ..當使用.css而不是偏移量時,它完美地工作! – haemse 2011-04-07 09:20:14

+0

謝謝完美。 – Deckard 2013-01-22 14:56:13

6

如果一個元素被設置爲「顯示:無」,則不能設置位置,寬度和高度,元素必須是可見進行計算。 Althought,您可以設置:

visibility: hidden; 

OR

position: absolute; 
left: -99999px; 

希望幫助!

+0

用CSS高度和頂部代替它的偏移方法... – haemse 2011-04-07 11:31:27