获取元素偏移量在设置position:absolute之前返回相同的值

时间:2014-10-07 08:56:52

标签: javascript jquery css offset absolute

我的问题是我有2 <div>个,包含相同的元素。这些元素彼此相对放置。将元素“topleft属性设置为.offset()提供的值后,然后将position设置为absolute,元素的偏移值都返回为0.为什么?

$(function(){
    $('[data-distance]').each(function(i,el){
        var $this = $(el),
            offset = $this.offset();
        $this.css(offset);
        $this.css('position','absolute');
    });
});
body {
    margin: 0;
    height: 1000px;
    font-family: arial;
}
h1 {
    margin: 0 0 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div data-distance="1">
    <h1>Text</h1>
    <p>Assssssdddddddasdasdasdasdasdasdasdsda</p>
</div>
<div data-distance="0.5">
    <h1>Text</h1>
    <p>Assssssdddddddasdasdasdasdasdasdasdsda</p>
</div>

1 个答案:

答案 0 :(得分:3)

它是0,因为当循环的第一次迭代发生时,它将第一个$('[data-distance]')的位置设置为绝对,所以当第二次迭代发生时,第一个元素位于{{1}位置},top: 0。因此,在找到所有匹配元素的偏移量后,应添加属性left: 0

应该是这样的http://jsfiddle.net/vp7jt2xj/

position: absolute