2011-03-18 88 views
4

我有一些HTML具有以下近似结构和定位:offsetParent()jQuery中未返回预期相对定位的祖先

<div class="grand-parent" style="position: absolute"> 
    <div class="parent" style="position: relative"> 
    <div class="child"></div> 
    </div> 
</div> 

在我的jQuery插件,我试图插入位于一个元素在小部件所针对的元素的“偏移父级”中。要做到这一点,我基本上是有这样的代码:

var targetElement = $('.child'); 
$('<div/>').appendTo(targetElement.offsetParent()); 

不幸的是,要素似乎被插入为.grand-parent,而不是parent一个孩子。我对offsetParent()(和文档似乎支持这一点)的理解是,offsetParent()应返回.parent,因为它位于相对位置。我对offsetParent的理解是不正确的,还是jQuery有问题(我正在使用1.4.1)。

+0

我注意到你正在追加到“this.element.offsetParent()”。这与targetElement有什么关系?你对offsetParent和appendTo的使用看起来是有效的,所以也许问题出在你简化它之前使用“this”或代码有问题? – Mayo 2011-03-18 21:32:16

+0

'this.element.offsetParent()'中的“this”的上下文是什么? – lsuarez 2011-03-18 21:33:18

+0

糟糕...更正。抱歉。应该是'targetElement.offsetParent()' – Jacob 2011-03-18 21:35:02

回答

6

根据https://developer.mozilla.org/en/DOM/element.offsetParent,offsetParent无法正常工作,因为如果父母未显示(display: none),我已经预料到了。在我的情况下,容器元素就是这样。

+0

我有同样的问题,但它是因为我得到一个抵消父母的元素是不可见的。 Webkit至少影响了我。没有尝试其他浏览器。 – 2014-03-21 17:46:01