我使用JQuery坚持使用Expand / Collapse手风琴。
点击初始标题并展开后,如果您点击另一个标题,它将完全折叠前标题,然后展开您点击的标题。这种崩溃首先扩大第二种技术是非常分散注意力的,应该发生的是当标题正在扩大它应该崩溃初始标题。我错过了什么?
您可以体验演示here
以下是我的所有工作>>
的Javascript
<script src="http://www.apus.edu/bin/l/y/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
//<!--
$(document).ready(function()
{
$(".accordian>li.expanded").removeClass("expanded");
$(".accordian>li h2").addClass("jse").click(function() {
var doOpen = !$(this).parent().hasClass('expanded');
var openContainers = $(".accordian>li.expanded").length>0;
var targetNode = this;
if(openContainers) {
$(".accordian>li.expanded h2")
.parent()
.removeClass('expanded')
.end()
.nextAll()
.slideUp(100,function(){
if($(".accordian>li.expanded").length==0) performOpen(doOpen,targetNode);
});
}
else {
performOpen(doOpen,targetNode);
}
// if containers are open, proceed on callback
// else proceed immediately
}).nextAll().slideUp(100);
});
function performOpen(doOpen,whichNode) {
if(doOpen) {
$('html,body').animate({scrollTop: $(whichNode).offset().top}, 1000); //target code
$(whichNode).nextAll().slideDown(100).parent().addClass('expanded');
}
}
//-->
</script>
CSS
<style>
.accordian {
list-style : none;
padding : 0px;
margin : 0px;
font-size : 12px;
}
.accordian li {
list-style : none;
padding : 0px;
margin : 0px;
}
.accordian li a:hover {
text-decoration : underline;
}
.accordian li h2 {
cursor : auto;
text-decoration : none;
padding : 0px 0px 4px 22px;
}
.accordian li h2.jse {
background-image : url(http://www.apus.edu/bin/m/p/toggle_arrow.gif);
background-position : 4px -35px;
background-repeat : no-repeat;
}
.accordian li h2:hover {
cursor : pointer;
text-decoration : underline;
}
.accordian li li {
margin-bottom : 5px;
margin-left : 0px;
margin-top : 0px;
padding : 0px;
}
.accordian li p {
display : block;
padding-top : 0px;
padding-bottom : 15px;
padding-left : 10px;
margin-left : 30px;
margin-top : 0px;
}
.accordian li ul {
margin-bottom : 30px;
margin-top : 0px;
padding-top : 0px;
padding-left : 0px;
margin-left : 0px;
}
.accordian li.expanded h2.jse {
background-position : 4px -5px;
}
.accordianContainer {
margin-top : 0px;
padding-top : 0px;
}
.accordianContainer h2 {
padding : 3px;
}
.accordian_nolist {
list-style : none;
}
</style>
HTML
<table height="120"><tr><td> </td></tr></table>
<div class="accordianContainer">
<ul class="accordian">
<li><h2>Title 1 Goes here - Example</h2>
<ul><li>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
</li></ul>
</li>
</ul>
</div>
<div class="accordianContainer">
<ul class="accordian">
<li><h2>Title 2 Goes here - Example</h2>
<ul><li>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
</li></ul>
</li>
</ul>
</div>
<div class="accordianContainer">
<ul class="accordian">
<li><h2>Title 3 Goes here - Example</h2>
<ul><li>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
</li></ul>
</li>
</ul>
</div>
<div class="accordianContainer">
<ul class="accordian">
<li><h2>Title 4 Goes here - Example</h2>
<ul><li>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
</li></ul>
</li>
</ul>
</div>
<div class="accordianContainer">
<ul class="accordian">
<li><h2>Title 5 Goes here - Example</h2>
<ul><li>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
this is where content goes<BR>this is where content goes<BR>this is where content goes<BR>
</li></ul>
</li>
</ul>
</div>
答案 0 :(得分:0)
.slideUp(100,function(){ if($(".accordian>li.expanded").length==0) performOpen(doOpen,targetNode); });
就在那里......你正在开场作为对收盘的回调......即。它会在slideUp
完成时触发。你需要重做这个,所以他们运行我paralell。以下内容:
$(".accordian>li.expanded h2").parent().removeClass('expanded')
.end()
.nextAll()
.slideUp(100);
if($(".accordian>li.expanded").length==0) {
performOpen(doOpen,targetNode);
}
这应该让它们大致在同一时间点火。
另外......你有没有理由不使用jquery-ui的手风琴小工具?它很容易风格,并有事件处理程序,你可以绑定你自己的东西为所有这些。 : - )
答案 1 :(得分:0)