调用两次时 jQuery 偏移量(坐标)的行为不一致

Not coherent behaviour of jQuery offset(coords) when called twice

本文关键字:坐标 不一致 偏移量 两次 调用 jQuery      更新时间:2023-09-26

我正在尝试使用jQuery offset()函数定位一个绝对定位的div。这个想法是将其放置在DOM的另一个元素的固定偏移处。这发生在具有多个嵌套div 的相当复杂的环境中。

发生的奇怪事情是,调用两次会给出两种不同的结果。对我来说,这似乎没有理由,尽管我对jQuery很陌生,所以我可以监督一些明显的事情。

我确实认为

var pos = $(document.getElementById(someElementInTheDOM)).offset();
$(document.getElementById(MyDiv)).offset( pos );

应该将 MyDiv 始终放在同一个位置,即使我调用此代码大约 10 次。这就是在这个小提琴中正确发生的事情。点击放大镜几次,一切都很好。

但是一旦我开始添加display:nonedisplay:block属性,事情就会被打乱。我试图把它归结为基本,我在这里创建了一个小提琴。要了解我的意思,请按放大镜,再次单击放大镜,再次单击放大镜,用白色"X"关闭div,再次单击放大镜。

知道发生了什么吗?

你只需要改变顺序:

document.getElementById("iuocboun_filter_window").style.display="block";
$(document.getElementById("iuocboun_filter_window")).offset( pos );

而不是

$(document.getElementById("iuocboun_filter_window")).offset( pos );
document.getElementById("iuocboun_filter_window").style.display="block";

编辑:

说明:offset不适用于隐藏元素,这就是为什么您必须首先使其可见,然后设置偏移量。 ;)