Jquery position()包括保证金

时间:2015-06-29 11:36:23

标签: javascript jquery position

如果我想在测量元素的宽度时包含边距我可以调用element.outerWidth(true);但是,我找不到类似的方法来获取容器中元素的左偏移量,其中边距已经包括了。 element.position().left不包括保证金。

我已经尝试了element[0].getBoundingClientRect().left,这有效,但有一个类似的jquery调用吗?

编辑: 看来上面的原生javascript调用也没有给我保证金..

2 个答案:

答案 0 :(得分:19)

这是jQuery的.position()的限制,它有这个限制:

  

注意: jQuery不支持获取隐藏元素的位置坐标或者考虑在body元素上设置边框,边距或填充。

推荐的解决方案:

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

答案 1 :(得分:-3)

使用Jquery offset()函数

<!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>