2011-07-10 142 views
1

我有一個問題,我用我的位置的彈出<div>窗口的中心:彈出窗口工作了高度

var popup = $("#popup"), popupWidth = popup.css("width").replace("px",""), popupHeight = popup.css("height").replace("px",""); 
    var xPosition = ($(window).width() - popupWidth)/2; 
    var yPosition = (($(window).height() - popupHeight)/2) + $(window).scrollTop(); 

    if (yPosition <= 0){ 
     yPosition = '0'; 
    } else if(yPosition <= $(window).scrollTop()){ 
     yPosition = $(window).scrollTop(); 
    } else { 
     yPosition = yPosition - 68; //minus top shaddow height 
    }   

    if (xPosition >= $('body').offset().left) { 
     xPosition = xPosition; 
    } else { 
     xPosition = '0'; 
    } 

    $(popup).css({ 
     'top': yPosition + 'px', 
     'left': xPosition + 'px', 
     'display' : 'block', 
     'height' : 'auto' 
    }).addClass("popup-open"); 

我的問題是,第一次加載彈出窗口的高度爲被返回爲0,因爲它被隱藏,直到上面的位置被解出爲止。爲了解決這個問題,我通過CSS設置了默認高度,然後一旦彈出窗口被顯示,我將其覆蓋爲自動。

現在的問題是,如果彈出窗口已關閉並重新打開,高度是自動的。有沒有辦法找到CSS高度:在樣式表不內聯的高度值:自動

更新的代碼 繼尼古拉回答這裏是固定碼:

var popup = $("#popup"), popupWidth = popup.css("width").replace("px",""), popupHeight = popup.css("height").replace("px",""); 

// Save/Get original height 
if(popupHeight == "auto"){ 
    popupHeight = popup.data('origHeight'); 
} else { 
    popup.data('origHeight', popupHeight); 
} 

var xPosition = ($(window).width() - popupWidth)/2; 
var yPosition = (($(window).height() - popupHeight)/2) + $(window).scrollTop(); 

回答

0

你爲什麼不將原始值保存在變量中?

var popup = $("#popup"), popupWidth = popup.css("width").replace("px",""), popupHeight = popup.css("height").replace("px",""); 

var originalHeight = popupHeight; 
var originalWidth = popupWidth; 

當重新打開彈出使用,而不是實際值

或者你可以使用使用data()來存儲和檢索的原始值它

$('#popup').data('origHeight', popupHeight); 
//the use $('#popup').data('origHeight') to retrieve it