スライド開閉式の多階層(入れ子)の順不同リストを、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>
<!--
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>
<!--
#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>
<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>