我想创建一个基本的切换列表。单击项目标题应向下滑动其内容,并向上滑动任何其他项目内容。
下面的代码可以工作,但是有一个问题,如果我多次单击一个项目,它会上下滑动,因为它被点击了很多次。
是否有办法改进它,以便即使您多次单击同一项,也只能滑动一次。
JQuery:
$(".title").click(function(e){
e.preventDefault();
$('.item').removeClass("active");
$(this).parent().addClass("active");
$('p').slideUp();
$(this).next().slideDown();
});HTML:
<div class="wrap">
<div class="item">
<div class="title">title1</div>
<p>content</p>
</div>
<div class="item">
<div class="title">title2</div>
<p>content</p>
</div>
</div>请参阅这里的演示程序,如果您多次单击标题,您将看到:
JSFiddle: http://jsfiddle.net/a7H27/
发布于 2013-12-08 17:26:59
发布于 2013-12-08 17:31:14
如果元素是动画的,则取消单击事件:
$(".title").click(function(e){
if($('.item, p').is(':animated')) return;
e.preventDefault();
$('.item').removeClass("active");
$(this).parent().addClass("active");
$('p').slideUp();
$(this).next().slideDown();
});发布于 2013-12-08 17:41:40
我可能会使用一个简单的if语句来测试父类是否有活动类,如果需要的话,它还可以选择折叠打开的窗格。
$(".title").click(function (e) {
if (!$(this).parent().hasClass('active')) {
e.preventDefault();
$('.item').removeClass("active");
$(this).parent().addClass("active");
$('p').slideUp();
$(this).next().slideDown();
} else { //optionally closes open panes, remove if desired
$('.item').removeClass("active");
$('p').slideUp();
}
});https://stackoverflow.com/questions/20456460
复制相似问题