我试图使用jQuery offset()函数定位绝对定位的div。 我们的想法是将它定位在与DOM的另一个元素固定的偏移处。这发生在具有多个嵌套div的非常复杂的环境中。
发生的奇怪事情是,两次调用会产生两种不同的结果。对我来说似乎没有理由这样做,虽然我对jQuery很陌生,所以我可能会忽略一些明显的事情。
我确实认为
var pos = $(document.getElementById(someElementInTheDOM)).offset();
$(document.getElementById(MyDiv)).offset( pos );
应该将MyDiv定位在同一个地方,即使我将此代码调用了大约10次。那是this fiddle中正确发生的事情。点击放大镜几次,一切正常。
但是一旦我开始添加display:none
和display:block
属性,事情就会中断。我试图把它归结为基础,我创造了一个小提琴here。要看我的意思,请按放大镜,再次点击放大镜,再次点击放大镜,用白色&#34; X&#34;关闭div,再次点击放大镜。< / p>
有什么线索?
答案 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
对隐藏元素不起作用,这就是为什么必须首先使其可见而不是设置偏移量。 ;)