2015-06-29 37 views
7

如果我想在測量元素的寬度時包含邊距,我可能會調用element.outerWidth(true);但是,我找不到類似的方法來獲取容器中元素的左偏移量,其中保證金包括在內。 element.position().left不包含保證金。jquery position()include margin

我試過element[0].getBoundingClientRect().left,這工作,但有沒有類似的jQuery的呼籲?

編輯: 看來,上述本地JavaScript調用不給我的保證金或者..

回答

15

這是jQuery的.POSITION(),有此限制的限制:

注意: jQuery不支持獲取隱藏元素的位置座標,也不支持在body元素上設置邊界,邊距或填充。

推薦方案:

var position = $element.position(); 
x = position.left + parseInt($element.css('marginLeft'), 10); 
y = position.top + parseInt($element.css('marginTop'), 10); 
+0

我認爲在這個答案的代碼在某些情況下,但查詢 'marginLeft' 我返回一個字符串與單位後綴,例如,「20px」,所以它需要被轉換。假設jQuery總是以像素爲單位返回邊距,像這樣的東西可以工作: x = position.left + parseInt($ element.css('marginLeft')) – David

+0

Thanks @David,fixed。 –

-1

使用jQuery偏移()函數

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>offset demo</title> 
    <style> 
    p { 
    margin-left: 10px; 
    } 
    </style> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<p>Hello</p><p>2nd Paragraph</p> 

<script> 
var p = $("p:last"); 
var offset = p.offset(); 
p.html("left: " + offset.left + ", top: " + offset.top); 
</script> 

</body> 
</html> 
+0

offset()函數具有[相同的限制](https://api.jquery.com/offset/):_注意:jQuery不支持獲取隱藏元素的偏移座標,也不支持設置邊框,邊距或填充身體元素._ – Ousmane