offsetParent()

jQuery API の offsetParent() は、マッチした要素の位置から最も近く、CSSのposition属性がrelative、absolute、fixedの何れかである、祖先要素を取得するメソッド。

記述方法

jQuery( セレクター ) . offsetParent();

「セレクター」にマッチする要素の位置から最も近く、CSSのposition属性がrelative、absolute、fixedの何れかである、祖先要素を取得する。

記述例

jQuery( '#jquery-sample' ) . offsetParent();

id名が「jquery-sample」の要素の位置から最も近く、CSSのposition属性がrelative、absolute、fixedの何れかである、祖先要素を取得する。

実装例(サンプル)

position属性がrelative、absolute、fixedの何れかである
最も近い祖先要素の背景色:

実装例(サンプル)の動作について

黄色のボックス要素をクリックすると、position属性がrelativeで、黄色のボックス要素から最も近い祖先要素であるのは、緑色のボックス要素なので、「最も近い祖先要素の背景色:」の右側の「■」を緑色にする。

紫色のボックス要素をクリックすると、position属性がrelativeで、紫色のボックス要素から最も近い祖先要素であるのは、青色のボックス要素なので、「最も近い祖先要素の背景色:」の右側の「■」を青色にする。

実装例(サンプル)のソースコード

JavaScript

<script>
<!--
jQuery( function() {
    jQuery( '#jquery-sample-div-yellow' ) . click( function () {
        var str = jQuery( this ) . offsetParent() . css( 'background-color' );
        jQuery( '#jquery-sample-message' ) . css( 'color', str );
    } );
    jQuery( '#jquery-sample-div-purple' ) . click( function () {
        var str = jQuery( this ) . offsetParent() . css( 'background-color' );
        jQuery( '#jquery-sample-message' ) . css( 'color', str );
    } );
} );
// -->
</script>

CSS

<style type="text/css">
<!--
#jquery-sample {
    width: 500px;
    height: 230px;
    margin: 0px;
    padding: 25px;
    background-color: pink;
    border: 1px solid gray;
    border-radius: 10px;
}
#jquery-sample div {
    margin: 25px;
    border: 1px solid gray;
    border-radius: 10px;
}
#jquery-sample-div-blue {
    width: 400px;
    height: 150px;
    position: relative;
    background-color: blue;
}
#jquery-sample-div-blue div {
    float: left;
}
#jquery-sample-div-green {
    width: 130px;
    height: 100px;
    position: relative;
    background-color: green;
}
#jquery-sample-div-yellow {
    width: 80px;
    height: 50px;
    background-color: yellow;
    cursor: pointer;
}
#jquery-sample-div-red {
    width: 130px;
    height: 100px;
    background-color: red;
}
#jquery-sample-div-purple {
    width: 80px;
    height: 50px;
    background-color: purple;
    cursor: pointer;
}
-->
</style>

HTML

<div id="jquery-sample">
    <p>
        position属性がrelative、absolute、fixedの何れかである<br />最も近い祖先要素の背景色:<span id="jquery-sample-message"></span>
    </p>
    <div id="jquery-sample-div-blue">
        <div id="jquery-sample-div-green">
            <div id="jquery-sample-div-yellow"></div>
        </div>
        <div id="jquery-sample-div-red">
            <div id="jquery-sample-div-purple"></div>
        </div>
        <span style="clear: left;"></span>
    </div>
</div>

スポンサード リンク

カテゴリー: API, DOMツリー, JavaScript, jQuery, オフセット, トラバース タグ: パーマリンク