2012-07-18 68 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