我在侧边栏中有一个菜单,用于确定在主要内容中显示哪个视图。
我已经设法使用 JQuery 创建它,但我觉得我在 JQuery 代码中重复了很多。
有没有更简洁的方法来实现这一点,但使其更具可扩展性且更容易添加元素而无需添加到 JQuery 代码?
这是我的小提琴 - https://jsfiddle.net/danjodesigns/9r20sfmb/3/
任何帮助改善这一点将不胜感激。
查询:
$(".settings-btn-1").click(function () {
$('.settings-menu-btn').removeClass("active");
$(this).addClass("active");
$('.settings-view').removeClass("active");
$('.view-1').addClass("active");
});
$(".settings-btn-2").click(function () {
$('.settings-menu-btn').removeClass("active");
$(this).addClass("active");
$('.settings-view').removeClass("active");
$('.view-2').addClass("active");
});
$(".settings-btn-3").click(function () {
$('.settings-menu-btn').removeClass("active");
$(this).addClass("active");
$('.settings-view').removeClass("active");
$('.view-3').addClass("active");
});
HTML:
<div class="container">
<div class="settings-sidebar">
<ul class="settings-menu">
<li class="settings-menu-btn settings-btn-1 active"><span>Account Details</span></li>
<li class="settings-menu-btn settings-btn-2"><span>Profile Information</span></li>
<li class="settings-menu-btn settings-btn-3"><span>Categories</span></li>
</ul>
</div>
<div class="settings-view-placeholder">
<section class="settings-view view-1 active">
<h2>Account Details</h2>
<p>Review and update your account details.</p>
</section>
<section class="settings-view view-2">
<h2>Profile Information</h2>
<p>View your profile information.</p>
</section>
<section class="settings-view view-3">
<h2>Categories</h2>
<p>Review and update your store categories. These tags will determine what shoppers your store is suggested to.</p>
</section>
</div>
</div>
CSS:
.container {
display:flex;
flex-direction:row;
width:100%;
}
.settings-sidebar {
background-color:white;
margin-right:15px;
}
.settings-menu {
list-style:none;
padding:0;
margin:0;
width:250px;
}
.settings-menu-btn {
border-bottom:solid 1px #EEEEEE;
padding:15px;
cursor: pointer;
}
.settings-menu-btn.active {
background-color:#191919 !important;
color:#FFFFFF !important;
}
.settings-menu-btn:hover {
background-color:#F7F7F7;
}
.settings-view-placeholder {
background-color:#FFFFFF;
padding:30px;
flex-grow:1;
}
.settings-view {
display: none;
flex-direction:column;
}
.view-1.active,
.view-2.active,
.view-3.active {
display: flex !important;
}
无需用数字的任何类。您可以使用li
类settings-menu-btn
,然后你可以用.index()
也没有必要view-1 , view-2 ...
,你可以只使用settings-view
和.eq()
直接
$("li.settings-menu-btn").click(function () {
var ThisIndex = $(this).index();
$('.settings-menu-btn').removeClass("active");
$(this).addClass("active");
$('.settings-view').removeClass("active");
$('.settings-view').eq(ThisIndex).addClass("active");
});
.container {
display:flex;
flex-direction:row;
width:100%;
}
.settings-sidebar {
background-color:white;
margin-right:15px;
}
.settings-menu {
list-style:none;
padding:0;
margin:0;
width:250px;
}
.settings-menu-btn {
border-bottom:solid 1px #EEEEEE;
padding:15px;
cursor: pointer;
}
.settings-menu-btn.active {
background-color:#191919 !important;
color:#FFFFFF !important;
}
.settings-menu-btn:hover {
background-color:#F7F7F7;
}
.settings-view-placeholder {
background-color:#FFFFFF;
padding:30px;
flex-grow:1;
}
.settings-view {
display: none;
flex-direction:column;
}
.settings-view.active {
display: flex !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="settings-sidebar">
<ul class="settings-menu">
<li class="settings-menu-btn active"><span>Account Details</span></li>
<li class="settings-menu-btn"><span>Profile Information</span></li>
<li class="settings-menu-btn"><span>Categories</span></li>
</ul>
</div>
<div class="settings-view-placeholder">
<section class="settings-view active">
<h2>Account Details</h2>
<p>Review and update your account details.</p>
</section>
<section class="settings-view">
<h2>Profile Information</h2>
<p>View your profile information.</p>
</section>
<section class="settings-view">
<h2>Categories</h2>
<p>Review and update your store categories. These tags will determine what shoppers your store is suggested to.</p>
</section>
</div>
</div>
虽然你不会使用view-1 , view-2 , ...
你需要改变
.view-1.active,
.view-2.active,
.view-3.active {
display: flex !important;
}
至
.settings-view.active {
display: flex !important;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句