如何使用jQuery制作展开和折叠切换面板
在这节中,我们主要来学习如何使用jQuery的.slideToggle()方法来制作显示和折叠的切换面板。当你点击标题时,与其相对应的相邻的主内容将会显示,当你在次点击此标题时,其对应的主内容又将会折叠起来。如下图所示:
实现上面的效果,对于jQuery来说是一件非常容易的事情,下面我们就一起看如何实现上图所展示的效果。
HTML Code
我们先来看看HTML Code
<div id="msgList" class="msgList"> <p class="msgHead">Header-1</p> <div class="msgBody">orem ipsum dolor sit amet, consectetuer adipiscing elit orem ipsum dolor sit amet, consectetuer adipiscing elit</div> <p class="msgHead">Header-2</p> <div class="msgBody">orem ipsum dolor sit amet, consectetuer adipiscing elit orem ipsum dolor sit amet, consectetuer adipiscing elit</div> <p class="msgHead">Header-3</p> <div class="msgBody">orem ipsum dolor sit amet, consectetuer adipiscing elit orem ipsum dolor sit amet, consectetuer adipiscing elit</div> <p class="msgHead">Header-4</p> <div class="msgBody">orem ipsum dolor sit amet, consectetuer adipiscing elit orem ipsum dolor sit amet, consectetuer adipiscing elit</div> </div>
下如你上面看到的HTML结构,把所有消息列表整个放在了“div#msgList”中。而消息列表依次是一个标题“p.msgHead”和一个消息主内容“div.msgBody”,并且这两者是相互对应的。因为我们要实现的功能是“当你点击了消息的头部的类【“.msgHead”】后,与其对应的消息主内容的类【“.msgBody”】就会展示,当你在一次点击时其对应的主内容将折叠起来。”
CSS Code
结构清晰后,我们在来给其加上一点样式,增加其外观的美化效果。
/*基本样式*/
.msgList {
margin: 0 0 15px 0;
padding: 0;
width: 200px;
}
.msgHead{
padding: 5px 10px;
cursor: pointer;
position: relative;
background-color: #fcc;
margin: 1px;
}
.msgBody {
padding: 5px 10px 15px;
background-color: #f4f4f8;
}
/*三角标志样式*/
.slideUp,
.slideDown {
position: absolute;
width: 0px; height: 0px;
border: 5px solid #000;
border-color: #fff #fcc #fcc;
background: black;
right : 10px;
bottom: 5px;
}
.slideUp {
border-color: #fcc #fcc #fcc #fff;
bottom: 6px;
right: 5px;
}
jQuery Code
到此,消息列表都美化好了,接下来主要看如何使用jQuery来实现前面所述的展开与折叠功能。
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//隐藏所有消息主体内容
$('.msgBody').hide();
//插入span标签用来制作三角标志
$('<span class="slideDown">').appendTo('.msgHead');
//点击标题相对应的内容展开,再次点击后折叠
$('.msgHead').click(function(){
$(this).children('span').toggleClass('slideDown slideUp').end().next('.msgBody').slideToggle(600);
});
});
</script>
实现效果我们主要通过以下几步实现的:
- 调入jQuery版本库:大家都知道在使用jQuery来制作效果,我们第一步都需要调入jQuery的版本库;
- 隐藏主内容:接着在页面载入时,首先将消息主内容“.msgBody”折叠起来(其实就是隐藏起来),如【$('.msgBody').hide();】
- 插入制作“三角形”标签:这里我们通过的是使用jQuery的“.appendTo()”方法在标题“.msgHead”插入制作三角形的html标签,如:【$('<span class="slideDown">').appendTo('.msgHead');】
- 实现展开和折叠功能:这里我们主要使用了jQuery中的“.slideToggle()”来实现点击标题“.msgHead”后,与其对应的主体内容“.msgBody”会展开,再次点击后将折叠。
这里我们还使用了jQuery中的其他几个方法,比如说“.children()”方法用来寻找“.msgHead”的子元素;“.toggleClass()”方法用来切换制作三角标签的类名;而且还使用了“.end()”和“.next()”等方法。
实现这种展开和折叠的效果,我们不仅仅只有一个jQuery中的“.slideToggle()”实现,还有一个“.toggle()”函数来实现。具体代码如下:
<script type="text/javascript">
$(document).ready(function(){
//隐藏所有消息主体内容
$('.msgBody').hide();
//插入span标签用来制作三角标志
$('<span class="slideDown">').appendTo('.msgHead');
//点击标题相对应的内容展开,再次点击后折叠
$('.msgHead').toggle(function(){
$(this).children('span').removeClass('slideDown').addClass('slideUp').end().next('.msgBody').slideDown(600);
},function(){
$(this).children('span').removeClass('slideUp').addClass('slideDown').end().next('.msgBody').slideUp(600);
});
});
</script>
虽然“.toggle()”和“.slideToggle()”都能实现开头展示的效果,但二者之间还是有所区别,致于有何区别,大家可以观注本站的更新,到时将呈现其二者的相同和区别之处。
通过上面的代码,使用jQuery来制作展开和折叠的切换面板是不是很容易呀,大家要是对这个感兴趣的话,可以点击由Roshan Bhattarai's Blog提供的在线DEMO。如果大家对这个还有更好的方法,或者有更精简的代码,欢迎一起交流和学习,也可以直接在评论中给我留。谢谢大家的观注和支持。
如需转载烦请注明出处:W3CPLUS




