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

Javascript 两次调用时jQuery偏移量(coords)的行为不一致,javascript,jquery,css,Javascript,Jquery,Css,我试图使用jQuery offset()函数定位绝对定位的div。 其思想是将其定位在与DOM的另一个元素的固定偏移处。这发生在具有多个嵌套div的非常复杂的环境中 奇怪的是,调用两次会得到两种不同的结果。对我来说,这似乎没有什么原因,尽管我对jQuery很陌生,所以我可能忽略了一些显而易见的事情 我确实认为 var pos = $(document.getElementById(someElementInTheDOM)).offset(); $(document.getElementById(

我试图使用jQuery offset()函数定位绝对定位的div。 其思想是将其定位在与DOM的另一个元素的固定偏移处。这发生在具有多个嵌套div的非常复杂的环境中

奇怪的是,调用两次会得到两种不同的结果。对我来说,这似乎没有什么原因,尽管我对jQuery很陌生,所以我可能忽略了一些显而易见的事情

我确实认为

var pos = $(document.getElementById(someElementInTheDOM)).offset();
$(document.getElementById(MyDiv)).offset( pos );
应该将MyDiv始终放在同一个位置,即使我调用此代码10次。这是正确的情况发生在。点击放大镜数次,一切正常

但是,一旦我开始添加
display:none
display: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";
编辑:


说明:
偏移量
对隐藏元素不起作用,因此必须首先使其可见,然后设置偏移量

只是想一想,既然您已经在使用jQuery,您可能想了解一下,那么这里也包含了对话框…@Banana我会看看,谢谢。我只是觉得在继续之前我应该好好学习jQuery,这种古怪的行为让我感到不舒服,因为它让我觉得我没有掌握后面发生的事情。试着使用jQuery
position
来代替它,而且我知道了确切的原因。谢谢顺便说一句,既然你已经指出了这一点,我在API文档中找到了注释。