我正在尝试创建一个手风琴,只需单击一下即可展开/折叠所有部分 . 我还需要用户能够打开和关闭一次打开0-n部分的部分 . 使用stackoverflow和jquery论坛上的几个讨论,这里是我提出的解决方案:我已经实现了每个部分,因为它是自己的手风琴,其中每个都设置为collapsible = true .
<html>
<head>
<title>Accordion Test</title>
<script type="text/javascript" src="../scripts/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../scripts/jquery-ui-1.8.4.custom.min.js"></script>
<link rel="stylesheet" href="../_templates/css/jquery-ui-1.8.6.custom.css" type="text/css" />
<link rel="stylesheet" href="../_templates/css/jquery.ui.accordion.css" type="text/css" />
</head>
<body>
<a onClick="expandAll()">Expand All</a>
<br>
<a onClick="collapseAll()">Collapse All</a>
<div id="accordion1" class="accord">
<h5><a href="#">section 1</a></h5>
<div>
section 1 text
</div>
</div>
<!-- orders section -->
<div id="accordion2" class="accord">
<h5><a href="#">section 2</a></h5>
<div>
section 2 text
</div>
</div>
<!-- section 3 -->
<div id="accordion3" class="accord">
<h5><a href="#">section 3</a></h5>
<div>
section 3 text
</div>
</div>
<!-- section 4 -->
<div id="accordion4">
<h5><a href="#">section 4</a></h5>
<div>
section 4 text
</div>
</div>
</body>
</html>
<script type="text/javascript">
$(function() {
$('#accordion1').accordion({
header: 'h5',
collapsible: true,
autoHeight: false
});
});
$(function() {
$('#accordion2').accordion({
header: 'h5',
collapsible: true,
autoHeight: false,
active: false
});
});
$(function() {
$('#accordion3').accordion({
header: 'h5',
collapsible: true,
autoHeight: false,
active: false
});
});
$(function() {
$('#accordion4').accordion({
header: 'h5',
collapsible: true,
autoHeight: false,
active: false
});
});
</script>
<script type="text/javascript">
$(document).ready(function() {
})
function expandAll() {
alert("calling expandAll");
$("#accordion1, #accordion2, #accordion3, #accordion4")
.filter(":not(:has(.ui-state-active))")
.accordion("activate", 0);
}
function collapseAll() {
alert("calling collapseAll");
$("#accordion1, #accordion2, #accordion3, #accordion4")
.filter(":has(.ui-state-active)")
.accordion("activate", -1);
}
</script>
我遇到的问题是,当我单击打开部分的 Headers 时,该部分按预期折叠,但 Headers 仍然具有“ui-state-focus”类,直到我单击页面上的其他位置 . 所以我在ui中看到的是刚关闭的部分的 Headers 与我的悬停效果具有相同的背景颜色,直到我点击其他地方,并且它转换为“默认,未聚焦”颜色 .
此外,当我使用“全部折叠”链接时,所有内容在Firefox中看起来都很棒 . 在IE中,最后一个节头具有相同的悬停焦点着色 .
有什么建议?我是否需要强制手风琴在关闭时失去焦点?我怎么做到这一点?
4 回答
尝试在页面上覆盖我的jquery-ui样式,并试图破解手风琴javascript以删除ui-state-focus类之后,一个简单的解决方案就曝光了 .
因为当我单击页面上的其他位置时,我的页面显示了预期的行为,所以我使用blur()来失去焦点 .
为了修复IE中崩溃的所有问题,我在我的collapseAll()方法中添加了1行 .
解决方案与所有开放式面板一起实施手风琴 . 面板是静态的,无法关闭 .
不要用手风琴小部件初始化手风琴div!
这是我的答案〜希望对它有所帮助
对于多个打开,你可以这样做,通过使用现有的jquery UI只需添加一个选项beforeActivate:
我的代码如下:
参考:jQuery UI accordion that keeps multiple sections open?
并且功能崩溃和扩展
而已..
你可以尝试这个小巧轻便的插件 .
它将提供很少的选项,我们可以根据我们的要求进行修改 .
URL: http://accordion-cd.blogspot.com/