当被调用两次时,jQuery偏移(coords)的行为不一致

时间:2014-11-21 11:02:24

标签: javascript jquery css

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

发生的奇怪事情是,两次调用会产生两种不同的结果。对我来说似乎没有理由这样做,虽然我对jQuery很陌生,所以我可能会忽略一些明显的事情。

我确实认为

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

应该将MyDiv定位在同一个地方,即使我将此代码调用了大约10次。那是this fiddle中正确发生的事情。点击放大镜几次,一切正常。

但是一旦我开始添加display:nonedisplay:block属性,事情就会中断。我试图把它归结为基础,我创造了一个小提琴here。要看我的意思,请按放大镜,再次点击放大镜,再次点击放大镜,用白色&#34; X&#34;关闭div,再次点击放大镜。< / p>

有什么线索?

1 个答案:

答案 0 :(得分:2)

您只需要更改顺序:

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对隐藏元素不起作用,这就是为什么必须首先使其可见而不是设置偏移量。 ;)