我已经使用以下代码来控制一系列3个侧边栏。正如您所看到的,代码并不是特别有效,因为我只是重复了每个类的内容。如果可能的话,我想简化这个功能吗?
我还希望添加仅允许一个侧边栏处于活动状态的功能。因此,如果侧边栏.artists
为.active
而我点击侧边栏.about
,则.artists
侧边栏将会崩溃。
感谢。
JQuery的
$(function() {
$( ".artists" ).click(function() {
$( ".sidebar.artists" ).toggleClass( "active" );
});
});
$(function() {
$( ".about" ).click(function() {
$( ".sidebar.about" ).toggleClass( "active" );
});
});
$(function() {
$( ".history" ).click(function() {
$( ".sidebar.history" ).toggleClass( "active" );
});
});
HTML
<nav>
<ul>
<li class="artists"><a>Artists</a></li>
<li><a href="<?=get_permalink(6)?>">News</a></li>
<li class="about"><a>About</a></li>
<li class="history"><a>History</a></li>
</ul>
</nav>
<nav class="sidebar artists">
Sidebar Artists content
</nav>
<nav class="sidebar about">
Sidebar About content
</nav>
<nav class="sidebar history">
Sidebar History content
</nav>
答案 0 :(得分:0)
您可以使用它来优化它:
$(function() {
$( ".sidebar" ).click(function() {
$(this).toggleClass( "active" );
$(".active").toggleClass( "active" );
});
});
根据标记代码,我建议您将主要ul
的ID添加为main-nav
:
$(function() {
$( "#main-nav li" ).click(function() {
var cls = this.className;
$(this).addClass( "active" )
.siblings("li").removeClass( "active" );
$(".sidebar."+cls).slideToggle()
.siblings(".sidebar").slideUp();
});
});
答案 1 :(得分:0)
正如您已经提供了标记,我已经更改了我的代码。
试试这个:
我已检查此代码并且它可以正常运行
<强> JS 强>
$(document).ready(function(){
$('ul li').on('click',function(){
$('.sidebar').hide();
$(this).parent().parent().siblings("." +$(this).attr('class')).show();
});
});
或者使用active
类
$('ul li').on('click',function(){
$('.sidebar').removeClass('active');
$(this).parent().parent().siblings("." +$(this).attr('class')).addClass('active');
});
以下是小提琴示例: http://jsfiddle.net/5angwsnb/3/
希望它也适合你!
<强>更新强>
<强> CSS:强>
.sidebar{
display:none;
}
.active{
//your transition here
}
答案 2 :(得分:0)
$('.artists, .about, .history').click(function() {
var subClass = '';
if($(this).hasClass('artists')) {
subClass = 'artists';
} else if($(this).hasClass('about')) {
subClass = 'about';
} else if($(this).hasClass('history')) {
subClass = 'history';
}
$('.sidebar:not(.'+subClass+')').removeClass('active');
$('.sidebar.'+subClass).toggleClass('active');
});