使用element.offset().left
可以获得元素与其父元素的偏移位置。有没有办法从另一个元素获得偏移位置?例如,这是我的html:
<div id="tile_id_579" class="product_tile">
<div class="selectContainer">
<table style="width:100%;">
<tbody>
<tr>
<td>
<div id="select-undefined" class="tzSelect">
<div id="options-undefined" class="tzOptions" style="max-height: 500px; width: 250px; display: none; min-width: 118px;">
<ul class="dropDown" id="dropdown-undefined">
<li><div class="header">Hand-Tossed Style Pizza</div>
<div class="subheader">The crowd-pleasing pizza that everyone can agree on.</div>
<div class="optkey">0</div>
</li>
<li><div class="header">Pan Pizza</div>
<div class="subheader">Our Pan Pizza is America's favorite!</div>
<div class="optkey">1</div>
</li>
</ul>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
它是从数据库生成的。使用offset().left
可以获得#selecct-undefined
div的偏移量,但我需要知道#options-undefined
div与.selectContainer
div之间的距离。这可能吗?
编辑添加
尝试了这两个,并且都返回相同的东西:top:381,left:0。但是对于文档,left不是0;它不可能。
var tip = $('#tile_id_579 #options-undefined .header');
tip.first().position();
和
var tip = $('#tile_id_579 #options-undefined .header');
tip.first().offset();
当这是div的位置时,两者的左边是0怎么可能?不留0表示它一直在浏览器窗口的左侧吗?
答案 0 :(得分:0)
由于您的元素确实位于您指定的父级内,因此您可以使用.position()而不是.offset()。但如果.selectContainer不是最接近的亲属,则需要获取元素和“其他”元素的位置并计算差异。
var myPos = $('#options-undefined').offset();
var otherPos = $('#options-undefined').closest('.selectContainer').offset();//if #options-undefined wasn't a child of .selectContainer you would do $('.selectContainer').offset();
var _offset = {
top: otherPos.top - myPos.top,
left: otherPos.left - myPos.left
}