2011-12-06 34 views
1

所以我这个 jsFiddle of mouseover together with absolute positioning divsjQuery的定位元素彼此相邻的鼠标 - 可滚动的div固定

结果是不需要的拨弄。该代码基于jquery how to position one element relative to another 但代码没有按预期工作。我可以根据绝对定位找出如何重新定位偏移量(例如,头的减去偏移量)。但我遇到的问题是滚动定位。一旦你开始滚动,位置是错误的。有人知道它的解决方案吗?

回答

0

不想回答我的问题,但在这里看到: working solution with jquery

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

它修复了我有重叠元素的问题。试想一下,你有一个固定位置元素E1和一个绝对位置元素E2。一个是左侧菜单,E2是内容。当您将鼠标悬停在某个元素上时想要显示/显示元素时在E2内容的div,并希望它重叠在左侧菜单E1,那么你需要确保div不在内容中,因为看起来你不能重叠到定位固定的E2的兄弟中。

+0

我已经更新了您引用的原始问题的答案,并且它现在应该可以处理您的问题了:) – Jacob

1

由于某些原因,滚动文档时,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(); 
}); 
+0

顺便说一句,像这样的例子总是一个很好的机会来反思何时jQuery实际上是必要的(即使用offsetLeft而不是jQuery的偏移函数)。另一个例子是使用this.className而不是$(this).attr('class')... – maxedison

+0

我必须纠正自己:这是行不通的。简单的旧的javascript offsetTop函数给我一个完全错误的位置,它与一些不同的父元素相关,只要我在一个更复杂的网页中使用它。 – Toskan

+0

然后请发布您的代码,或创建一个小提琴,显示此。 – maxedison