鼠标hover时jQuery Position Element彼此相邻 – 固定可滚动div

所以我摆弄了这个带有绝对定位div的鼠标hover的jsFiddle

结果是不受欢迎的。 代码基于jquery如何将一个元素相对于另一个元素定位但是代码没有按预期工作。 我可以弄清楚如何根据绝对定位重新定位偏移(例如标头的减法偏移)。 但我遇到的麻烦是滚动定位。 一旦开始滚动,位置就错了。 有人知道它的解决方案吗?

出于某种原因,当您滚动文档时,jQuery中的offset().top值会发生变化。 相反,只需使用标准HTML元素属性offsetLeftoffsetTop

工作示例: http : //jsfiddle.net/YpcSe/2/

码:

 $("#m1").mouseover( function(){ $("#o1").css({ "left": this.offsetLeft, "top":this.offsetTop }).show(); }) .mouseout( function(){ $("#o1").hide(); }); $("#m2").mouseover( function(){ $("#o2").css({ "left": this.offsetLeft, "top":this.offsetTop }).show(); }) .mouseout( function(){ $("#o2").hide(); }); 

讨厌回答我自己的问题但是看到这里: 用jquery工作的解决方案

基本上问题是元素插入错误的位置。 偏移量在某种程度上与滚动条的页面没有正确关联。 这可以通过在父窗体上添加元素来修复(例如,如果您想要显示某些按钮)。 或者

它修复了我所拥有的重叠元素的问题。 想象一下,你有一个固定定位元素E1和一个绝对定位元素E2。 一个是左侧菜单,E2是内容。 当您想要将鼠标hover在E2内容中的例如div上并且希望它在左侧菜单E1上重叠时要显示/显示元素,那么您需要确保div不在内容中,因为它似乎是你不能重叠成固定位置的E2的兄弟姐妹。