OpenJS Foundation - openjsf.org · api.jquery.com

.offsetParent()Returns: jQuery

Description: Get the closest ancestor element that is positioned.

Given a jQuery object that represents a set of DOM elements, the .offsetParent() method allows us to search through the ancestors of these elements in the DOM tree and construct a new jQuery object wrapped around the closest positioned ancestor. An element is said to be positioned if it has a CSS position attribute of relative, absolute, or fixed. This information is useful for calculating offsets for performing animations and placing objects on the page.

Consider a page with a basic nested list on it, with a positioned element:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<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>

If we begin at item A, we can find its positioned ancestor:

1

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

This will change the color of list item II, which is positioned.

Example:

Find the offsetParent of item "A."

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<!doctype html>

<html lang="en">

<head>

<meta charset="utf-8">

<title>offsetParent demo</title>

<script src="https://code.jquery.com/jquery-4.0.0.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>

Demo:

Read the original on api.jquery.com ↗