我用jQuery开发了一个非常基本的Accordion。
我想让所有手风琴随时都开放。
我还希望有一条文字open
& close
取决于他们是否打开/关闭。
HTML:
<div id="accordion">
<h4 class="accordion-toggle">Accordion 1</h4>
<div class="accordion-content default">
<p>Cras malesuada ultrices augue molestie risus.</p>
</div>
<h4 class="accordion-toggle">Accordion 2</h4>
<div class="accordion-content">
<p>Lorem ipsum dolor sit amet mauris eu turpis.</p>
</div>
<h4 class="accordion-toggle">Accordion 3</h4>
<div class="accordion-content">
<p>Vivamus facilisisnibh scelerisque laoreet.</p>
</div>
</div>
CSS:
.accordion-toggle {cursor: pointer; margin: 0;}
.accordion-content {display: none;}
.accordion-content.default {display: block;}
使用Javascript:
$(document).ready(function($) {
$('#accordion').find('.accordion-toggle').click(function(){
//Expand or collapse this panel
$(this).next().slideToggle('fast');
//Hide the other panels
$(".accordion-content").not($(this).next()).slideUp('fast');
});
});
答案 0 :(得分:2)
先生,您在先生:
<a href="#" class="open">Open All</a>
<a href="#" class="close">Close All</a>
<div id="status"></div>
<div id="accordion">
<h4 class="accordion-toggle">Accordion 1</h4>
<div class="accordion-content default">
<p>Cras malesuada ultrices augue molestie risus.</p>
</div>
<h4 class="accordion-toggle">Accordion 2</h4>
<div class="accordion-content">
<p>Lorem ipsum dolor sit amet mauris eu turpis.</p>
</div>
<h4 class="accordion-toggle">Accordion 3</h4>
<div class="accordion-content">
<p>Vivamus facilisisnibh scelerisque laoreet.</p>
</div>
</div>
和JS:
$(document).ready(function($) {
$('.accordion-toggle').click(function(){
//Expand or collapse this panel
$(this).next().slideToggle('fast');
//Hide the other panels
$(".accordion-content").not($(this).next()).slideUp('fast');
});
$(".open").click(function(e){
e.preventDefault();
$('.accordion-toggle').next().slideDown('fast');
$("#status").text("Opened");
});
$(".close").click(function(e){
e.preventDefault();
$('.accordion-toggle').next().slideUp('fast');
$("#status").text("Closed");
});
});
答案 1 :(得分:2)
要让所有的手风琴面板一次打开,只需删除此线,因为它会折叠其他面板。
// Hide the other panels
$(".accordion-content").not($(this).next()).slideUp('fast');
要显示每个面板的打开/关闭状态,您可以添加一个在显示或隐藏面板后运行的回调函数,并使用jQuery .is()
$(this).next().slideToggle('fast', function(){
var status = $(this).is(':hidden') ? 'close' : 'open';
$(this).next('.accordion-status').html(status);
});
请注意,您需要添加一个元素才能为每个面板显示此状态(在此示例中,DIV
具有类'accordion-status'
)