1. 要件:
jquery を使用して、左側に 2 レベルのネストされたリストを実装し、クリックすると右側にコンテンツが表示されます。
2. アイデア:
- クリック イベント ハンドラーは、第 1 レベルのリスト項目と第 2 レベルのサブリスト項目に追加されます。
- 第 1 レベルのリスト項目をクリックすると、.slideToggle() メソッドを使用して、対応する第 2 レベルのサブリスト項目を展開または折りたたむことができます。
- 第 2 レベルのサブリスト項目がクリックされたとき、event.stopPropagation() メソッドを使用してイベントのバブリングを防ぎ、data-target 属性の値に従って対応する適切なコンテンツ要素を取得し、.show () メソッドを使用して表示します。また、他の右側のコンテンツ要素も非表示にします。
3. コード:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery.min.js"></script>
<style>
.container {
display: flex;
}
.left-panel {
width: 30%;
background-color: #f2f2f2;
}
.left-list {
list-style: none;
padding: 0;
margin: 0;
}
.list-item {
padding: 10px;
cursor: pointer;
}
.sub-list {
list-style: none;
padding: 0;
margin: 10px 0 0 20px;
}
.sub-item {
padding: 5px;
cursor: pointer;
}
.right-panel {
flex: 1;
background-color: #fff;
}
.content {
display: none;
padding: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="left-panel">
<ul class="left-list">
<li class="list-item">
项目1
<ul class="sub-list">
<li class="sub-item" data-target="content1">子项目1</li>
<li class="sub-item" data-target="content2">子项目2</li>
<li class="sub-item" data-target="content3">子项目3</li>
</ul>
</li>
<li class="list-item">
项目2
<ul class="sub-list">
<li class="sub-item" data-target="content4">子项目4</li>
<li class="sub-item" data-target="content5">子项目5</li>
<li class="sub-item" data-target="content6">子项目6</li>
</ul>
</li>
<li class="list-item">
项目3
<ul class="sub-list">
<li class="sub-item" data-target="content7">子项目7</li>
<li class="sub-item" data-target="content8">子项目8</li>
<li class="sub-item" data-target="content9">子项目9</li>
</ul>
</li>
</ul>
</div>
<div class="right-panel">
<div class="content" id="content1">
<!-- 右侧内容1 -->1
</div>
<div class="content" id="content2">
<!-- 右侧内容2 -->2
</div>
<div class="content" id="content3">
<!-- 右侧内容3 -->3
</div>
<div class="content" id="content4">
<!-- 右侧内容4 -->4
</div>
<div class="content" id="content5">
<!-- 右侧内容5 -->5
</div>
<div class="content" id="content6">
<!-- 右侧内容6 -->6
</div>
<div class="content" id="content7">
<!-- 右侧内容7 -->7
</div>
<div class="content" id="content8">
<!-- 右侧内容8 -->8
</div>
<div class="content" id="content9">
<!-- 右侧内容9 -->9
</div>
</div>
</div>
<script>
$(document).ready(function() {
$('.list-item').click(function() {
$(this).siblings().find('.sub-list').slideUp();
$(this).find('.sub-list').slideToggle();
});
$('.sub-item').click(function(event) {
event.stopPropagation();
var target = $(this).data('target');
$('.content').hide();
$('#' + target).show();
});
});
</script>
</body>
</html>