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:
<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:
$( "li.item-a" ).offsetParent().css( "background-color", "red" );
This will change the color of list item II, which is positioned.
version added: 1.2.6
This method does not accept any arguments.
Examples:
Find the offsetParent of item "A."
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>offsetParent demo</title> <script src="https://code.jquery.com/jquery-1.10.2.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>
Please login to continue.