【问题标题】:How to get position().left/top of an element before setting it to absolute position?如何在将元素设置为绝对位置之前获取元素的位置()左/顶部?
【发布时间】:2013-09-20 16:18:04
【问题描述】:

在将元素设置为绝对位置之前,我需要获取元素的当前位置(上、左)。

这样做:

var left = $(element).position().left;
$(element).css({'position':'absolute'});  

left 将始终为 0 。但初始位置不是 0 。如果我不使用 css() 方法设置绝对位置,left 将返回右左位置。关于如何解决这个问题的任何想法?

附: : 在 answerng 之前,这个 bug 也发布在 jquery bug tracker 上。但是那里也没有人回答。仔细阅读我的问题。我不是在问如何获得职位,我是在问为什么我会为任何一组元素 Jquery bug link 获得相同的职位。在将它们设置为 absolute 之后,所有元素都获得相同的位置是正常的,而不是 before 。还是我错了?

【问题讨论】:

  • 同样的问题。为所有绝对定位的元素获取相同的左侧位置
  • 元素是否可见?
  • 是的,它是可见的,它们都是。并且我得到了所有人的相同职位。如果我不设置绝对位置,我会得到很好的回报
  • 你的代码的其余部分一定有一些东西。这是一个 jsfiddle,它基本上可以完成我期望您正在做的事情,并且工作正常。您使用的是非常旧的 jQuery 版本还是什么? jsfiddle.net/3tF7h/5

标签: jquery


【解决方案1】:

如果你想获得它的 css 定义的左侧位置,请使用

var left = parseInt($element.css("left"));

如果您想获取它相对于文档的位置,请使用

var left = $element.offset().left;

【讨论】:

    【解决方案2】:

    尝试使用.offset() 而不是.position(),这将为您提供基于document 元素而不是HTML 父元素的元素坐标(具有非静态位置集)。

    文档:

    http://api.jquery.com/offset

    http://api.jquery.com/position

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多