如何使用Jquery在给定的html结构的基础上产生手风琴效果
How to make an accordion effect using Jquery based on a given html structure?
我想使用以下结构制作手风琴效果。这个想法是,当我点击.booklist>li>a时,它会切换相应的文章,一次只能打开一篇文章。有人能帮我写这个剧本吗?欢迎Jquery。
http://jsfiddle.net/vinicius5581/r2zevb3d/1/
CSS
article{
display:none;
}
HTML
<section>
<ul class="booklist">
<li>
<a>Article Name 1</a>
<article>
<p><content</p>
<img class="left" src="myimage"/>
<p>more content</p>
</article>
</li>
<li>
<a>Article Name 2</a>
<article>
<p><content</p>
<img class="left" src="myimage"/>
<p>more content</p>
</article>
</li>
<li>
<a>Article Name 3</a>
<article>
<p><content</p>
<img class="left" src="myimage"/>
<p>more content</p>
</article>
</li>
尝试此
$(document).ready(function(){
$('.booklist>li>a').click(function(){
$('.booklist>li>a + article').slideUp();
$(this).next('article').slideDown();
});
});
演示
-----------------
此处更新代码
$(document).ready(function(){
$('.booklist>li>a').click(function(){
$(this).next('article').slideToggle();
$(this).closest('li').siblings('li').find('article').slideUp();
});
});
更新的演示
我相信这就是您想要的:
$(".booklist li").click(function(){
$(this).find("article").slideToggle().end().siblings("li").find("article").slideUp();
});
JSFIDDLE
您可以使用以下代码
$("a").click(function(){
$(this).siblings("article").slideToggle()
.closest("li").siblings("li").find("article").slideUp();
});
DEMO
HTML
<section>
<ul class="booklist">
<li> <a href="#">Article Name 1</a>
<article>
<p>
<content</p>
<img class="left" src="myimage" />
<p>more content</p>
</article>
</li>
<li> <a href="#">Article Name 2</a>
<article>
<p>
<content</p>
<img class="left" src="myimage" />
<p>more content</p>
</article>
</li>
<li> <a href="#">Article Name 3</a>
<article>
<p>
<content</p>
<img class="left" src="myimage" />
<p>more content</p>
</article>
</li>
</ul>
</section>
CSS
ul, li, h4, p {
margin:0;
}
li {
list-style:none;
}
.booklist li a {
cursor: pointer;
}
.booklist li article {
display: none;
}
脚本
$(document).ready(function ($) {
$('.booklist').find('a').click(function () {
//Expand or collapse this panel
$(this).next().slideToggle('slow');
//Hide the other panels
$(".booklist li article").not($(this).next()).slideUp('slow');
});
});
Fiddle演示
相关文章:
- 如何在大型nodeJS代码的基础上逐步引入typescript
- 我想在值的基础上选中复选框
- 如何在多变量比较的基础上添加ng类
- 如何在标题SoundCloud的基础上进行曲目搜索
- 在选择其他下拉列表html和javascript araray的基础上,填充3个连续的下拉列表
- 在原始对象的基础上创建新对象的最简单方法,但没有几个字段
- Protractor:在innerhtml的基础上获取元素
- Slick Carousel在应用程序动态路由的基础上不起作用
- 在其他元素的基础上隐藏/取消隐藏jsp元素
- 使用jquery在前一行的基础上交替行颜色
- 使用mysql数据库在第一个下拉框的基础上自动填充第二个下拉框
- 使用javascript在第一个选择列表选项的基础上更改第二个选择列表
- 如何在执行特定函数(Javascript)的基础上呈现模板
- 在另一个选择中先前选择的选项的基础上更改选择选项
- 在上述ul类的基础上给出li元素类
- 在Json函数的基础上返回javascript函数的值
- 如何使用Jquery在给定的html结构的基础上产生手风琴效果
- 如何在JSON数组字段的基础上从主干集合中提取模型
- 在DIV的基础上添加动画's的数据信息
- 如何在外部元素掉落的基础上更改背景颜色's id:完整日历