h5 development website - use jquery to implement a two-layer nested left list, and the effect of displaying the content on the right after clicking

1. Requirements:

Use jquery to implement a two-level nested list on the left, which displays the content on the right after clicking.
Insert image description here

2. Ideas:

  1. Click event handlers are added for the first-level list items and the second-level sub-list items.
  2. When a first-level list item is clicked, use the .slideToggle() method to expand or collapse the corresponding second-level sublist item.
  3. When the secondary sublist item is clicked, use the event.stopPropagation() method to prevent the event from bubbling, obtain the corresponding right content element based on the value of the data-target attribute, and use the .show() method to display it. Also hides other right content elements.

3. Code:

<!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>

OK done

Insert image description here

Guess you like

Origin blog.csdn.net/weixin_48596030/article/details/132742284