如何使用jQuery手风琴创建div

时间:2012-11-28 14:48:57

标签: javascript jquery

我正在使用这个:

<script>
    $(function() {
        $( "#accordion" ).accordion();
    });
</script>

获得展开/折叠的效果。 (如果你知道一个更好的插件或方法,请注意我)

我有这个div:<div id ="accordion"></div>

这段代码在div中创建一个按钮。 (不要担心按钮的内容)

$('#button_submit').click(function() 
{
$("#accordion").append(
$("<button id=saved"+j+">").click(function() {
drawChart.apply(null, myArray);
}).html("<b>Start date:</b>"+""+myArray[0]+"\n<b>End date:</b>"+myArray[1]+"\n<b>Chart type:</b>"+myArray[2]+"")
);

我的问题是,如何创建/格式化div手风琴以产生这种效果accordion effect jquery

<button id=saved"+j+">应出现在sections内。

干杯

3 个答案:

答案 0 :(得分:1)

这是一个非常简单的Accordion插件..

http://viralpatel.net/blogs/create-accordion-menu-jquery/

$("#accordion > li > div").click(function(){

    if(false == $(this).next().is(':visible')) {
        $('#accordion ul').slideUp(300);
    }
$(this).next().slideToggle(300);
});

$('#accordion ul:eq(0)').show();

答案 1 :(得分:1)

  

已更新 与示例 换句话说,经过测试和工作

这是您需要的代码。正如我之前提到的那样,问题是你将按钮添加到主div而不是部分。

jsFiddle (working example)

Alt Example (possibly cleaner)

This one allows adding new accordion pieces (with button inside)

  • 注意:最后一个的棘手部分是你必须销毁手风琴并重新创建它,所以如果你有创建手风琴的特定选项,你可能想要将它们分开包装功能并在销毁后立即调用
  

脚本

$(function() {
    $("#accordion").accordion();

    $("#accordion .ui-accordion-content").each(function(i) {
        $(this).append(
            $("<button />")
                .prop("id", "saved"+j+">")
                .html("<b>Start date:</b>"+""+myArray[0]+"\n<b>End date:</b>"+myArray[1]+"\n<b>Chart type:</b>"+myArray[2])
                .on("click", function(e) {
                    drawChart.apply(null, myArray);
                })
        );
    });
})

确保您的HTML布局正确无误。

  

示例HTML

<div id="accordion">
    <h3>Section 1</h3>
    <div>
        <p>
        Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
        ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
        amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
        odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
        </p>
    </div>
    <h3>Section 2</h3>
    <div>
        <p>
        Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
        purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
        velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
        suscipit faucibus urna.
        </p>
    </div>
    <h3>Section 3</h3>
    <div>
        <p>
        Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
        Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
        ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
        lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
        </p>
        <ul>
            <li>List item one</li>
            <li>List item two</li>
            <li>List item three</li>
        </ul>
    </div>
    <h3>Section 4</h3>
    <div>
        <p>
        Cras dictum. Pellentesque habitant morbi tristique senectus et netus
        et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
        faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
        mauris vel est.
        </p>
        <p>
        Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
        Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
        inceptos himenaeos.
        </p>
    </div>
</div>

答案 2 :(得分:1)

jQuery UI Accordion需要特定的HTML结构。

  

基础HTML标记是一系列标题(H3标记)和内容div,因此内容可以在没有JavaScript的情况下使用。

http://jqueryui.com/accordion/

<div id="accordion">
    <h3>Section 1</h3>
    <div>
        <p>
        Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
        ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
        amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
        odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
        </p>
    </div>
    <h3>Section 2</h3>
    <div>
        <p>
        Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
        purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
        velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
        suscipit faucibus urna.
        </p>
    </div>
</div>

你不能只是打一个按钮就可以了。你可以在各个部分放一个按钮。