调整jQuery手风琴 - 打开所有标签

时间:2015-02-10 22:20:25

标签: javascript jquery html css

我用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');

    });
});

http://jsfiddle.net/zbjv3cak/

2 个答案:

答案 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");
        });
    });

http://jsfiddle.net/zbjv3cak/1/

答案 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'

完整小提琴:http://jsfiddle.net/67w3pa89/