2012-07-18 93 views
1

我正在使用jquery .css()函數獲得'margin-left'屬性使用var divMargin= $('#DivId').css('margin-left')但我得到undefineddivMargin有時候這個工作完美和有時會導致問題

var divMargin= $('#DivId').css('margin-left'); 

這種意外行爲的原因是什麼?

+0

什麼的$( '#DIVID')的結果後運行? – 2012-07-18 12:39:38

+0

是否使用marginLeft(JS屬性的名稱)而不是邊距左邊的幫助?它可能會有更一致的行爲。 – darma 2012-07-18 12:39:41

+0

我認爲他應該給一些價值 – 2012-07-18 12:40:22

回答

0

把你的腳本中

$(document).ready(function(){ 
var divMargin= $('#DivId').css('margin-left'); 
}) 

所以DOM被加載

+0

是的,我正在訪問$('#DivId'),它完全加載之前,所以現在它適用於我。謝謝哥們 – BrainCoder 2012-07-19 06:28:08

0

jQuery的.css()不返回計算的樣式。如果我沒有記錯的話,它只會讓你通過.css(..)調用設置的那些CSS屬性。爲了得到當前設置的CSS屬性,無論它是從哪裏設置,您可以使用window.getComputedStyle

使用這樣來計算樣式的元素:

window.getComputedStyle(element); 

編號:https://developer.mozilla.org/en/DOM/window.getComputedStyle

保證金 - 左,你可以這樣做:

var marginLeft = window.getComputedStyle($('#DivId')[0]).marginLeft; 
+0

如果保證金餘額是速記保證金屬性的一部分,這也會起作用嗎?像這樣 - >「margin:10px 20px 30px 40px」 – Undefined 2012-07-18 12:44:26

+0

根據'.css()'文檔,它也應該返回計算值。 – 2012-07-18 12:44:28

+0

@Sam - 是的,它會的。它將返回最終計算的CSS屬性值。即瀏覽器用來進行渲染的值。 – techfoobar 2012-07-18 12:46:10