jQueryで作るスライド開閉式順不同リスト

スライド開閉式の多階層(入れ子)の順不同リストを、jQueryで作る方法。

実装例(サンプル)

  • 項目1

    • 項目1-1

    • 項目1-2

      • 項目1-2-1

      • 項目1-2-2

    • 項目1-3

    • 項目1-4

      • 項目1-4-1

      • 項目1-4-2

  • 項目2

    • 項目2-1

    • 項目2-2

      • 項目2-2-1

      • 項目2-2-2

    • 項目2-3

  • 項目3

    • 項目3-1

    • 項目3-2

    • 項目3-3

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

入れ子になっているリスト項目には、「+」が追加されている。「+」が追加されている項目をクリックすると、入れ子になっているリストを、スライドダウンで開き、「+」を「-」に変更する。再度クリックすると、入れ子になっているリストを、スライドアップで閉じ、「-」を「+」に変更する。

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

JavaScript

<script type="text/javascript">
<!--
jQuery( function() {
    jQuery( '#jquery-sample li' ) . toggle(
        function () {
            jQuery( '> ul' ,this ) . slideDown( 'slow' );
            jQuery( '> p > span' ,this ) . text( '-' );
        },
        function () {
            jQuery( '> ul' ,this ) . slideUp( 'slow' );
            jQuery( '> p > span' ,this ) . text( '+' );
        }
    );
    jQuery( '#jquery-sample li:has(ul) > p' )
        . css( {
            cursor: 'pointer',
        } )
        . append( '<span>+</span>' );
} );
// -->
</script>

CSS

<style>
<!--
#jquery-sample li ul {
    display: none;
}
#jquery-sample span {
    margin: 0 1em;
    padding: 0px 5px;
    font-size: 10px;
    background-color: #f1f1f1;
    border: 1px solid gray;
    border-radius: 5px;
}
-->
</style>

HTML

<ul id="jquery-sample">
    <li><p>項目1</p>
        <ul>
            <li><p>項目1-1</p></li>
            <li><p>項目1-2</p>
                <ul>
                    <li><p>項目1-2-1</p></li>
                    <li><p>項目1-2-2</p></li>
                </ul>
            </li>
            <li><p>項目1-3</p></li>
            <li><p>項目1-4</p>
                <ul>
                    <li><p>項目1-4-1</p></li>
                    <li><p>項目1-4-2</p></li>
                </ul>
            </li>
        </ul>
    </li>
    <li><p>項目2</p>
        <ul>
            <li><p>項目2-1</p></li>
            <li><p>項目2-2</p>
                <ul>
                    <li><p>項目2-2-1</p></li>
                    <li><p>項目2-2-2</p></li>
                </ul>
            </li>
            <li><p>項目2-3</p></li>
        </ul>
    </li>
    <li><p>項目3</p>
        <ul>
            <li><p>項目3-1</p></li>
            <li><p>項目3-2</p></li>
            <li><p>項目3-3</p></li>
        </ul>
    </li>
</ul>

スポンサード リンク

カテゴリー: API, JavaScript, jQuery, リスト, 逆引き パーマリンク