返回值:jQueryoffsetParent()
取得离指定元素最近的含有定位信息的祖先元素。含有定位信息的元素指的是,CSS 的 position 属性是 relative
, absolute
, 或 fixed
的元素。
-
1.2.6 新增offsetParent()
如果通过 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>