返回值:jQueryoffsetParent()

取得离指定元素最近的含有定位信息的祖先元素。含有定位信息的元素指的是,CSS 的 position 属性是 relative, absolute, 或 fixed 的元素。

如果通过 jQuery 选择器得到了一个 jQuery 对象,这个对象代表一组 DOM 元素,那么 .offsetParent() 方法会查找这些元素在 DOM 树中的祖先元素,并创建一个新的 jQuery 对象,其中含有取得的离指定元素最近的含有定位信息的祖先元素。含有定位信息的元素指的是,CSS 的 position 属性是 relative, absolute, 或 fixed 的元素。定位信息对于计算动画时的偏移并且在页面上放置元素时特别有用。

例如,下面是一个含有嵌套列表的例子,其中具备含有定位信息的元素:

<ul class="level-1">
  <li class="item-i">I</li>
  <li class="item-ii" style="position: relative;">II
    <ul class="level-2">
      <li class="item-a">A</li>
      <li class="item-b">B
        <ul class="level-3">
          <li class="item-1">1</li>
          <li class="item-2">2</li>
          <li class="item-3">3</li>
        </ul>
      </li>
      <li class="item-c">C</li>
    </ul>
  </li>
  <li class="item-iii">III</li>
</ul>

如果从 A 项目开始的话,我们可以向下面这样查找它的含有定位信息的祖先元素:

$('li.item-a').offsetParent().css('background-color', 'red');

结果是找到了 II 项目列表,并改变了它的背景色。

示例:

查找 "A." 项目的 offsetParent。

<!DOCTYPE html>
<html>
<head>
<script src="jquery.min.js"></script>
</head>
<body>


    <ul class="level-1">
      <li class="item-i">I</li>
      <li class="item-ii" style="position: relative;">II
        <ul class="level-2">
          <li class="item-a">A</li>
          <li class="item-b">B
            <ul class="level-3">
              <li class="item-1">1</li>
              <li class="item-2">2</li>
              <li class="item-3">3</li>
            </ul>
          </li>
          <li class="item-c">C</li>
        </ul>
      </li>
      <li class="item-iii">III</li>
    </ul>
  

<script>

$('li.item-a').offsetParent().css('background-color', 'red');

</script>
</body>
</html>

演示: