我的问题是我有2 <div>
个,包含相同的元素。这些元素彼此相对放置。将元素“top
和left
属性设置为.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>
答案 0 :(得分:3)
它是0
,因为当循环的第一次迭代发生时,它将第一个$('[data-distance]')
的位置设置为绝对,所以当第二次迭代发生时,第一个元素位于{{1}位置},top: 0
。因此,在找到所有匹配元素的偏移量后,应添加属性left: 0
。
应该是这样的http://jsfiddle.net/vp7jt2xj/
position: absolute