jQuery手风琴在其内容被清空并重新创建后不起作用

时间:2012-08-09 03:10:44

标签: javascript jquery html jquery-ui-accordion

您将看到点击divA时,divAA将向下滑动。单击divB时,divBB将向下滑动。

清除主DIV并再次添加相同内容后,手风琴停止工作,如本演示所示:http://jsfiddle.net/p7vUk/2/

有人可以解释为什么它会停止工作以及如何解决它?

2 个答案:

答案 0 :(得分:4)

尝试this

您需要在清除之前重置手风琴小部件。由于.accordion()已为accordion元素初始化,因此只需调用#content即可生效,因此您需要使用#content方法从.accordion('destroy')删除现有的折叠小部件

function createAccordion(){
    $("#content").accordion({
        active: -1,
        collapsible: true,
        autoHeight: false,
        clearStyle: true
    });
}

$(document).ready(function () {
            createAccordion();                
        });


function clearAndAdd() {
    $("#content").accordion( "destroy" ).empty();
    $("#content").append('<div id="a">DIV ID A</div><div id="aa">DIV ID AA</div><div id="b">DIV ID B</div><div id="bb">DIV ID BB</div>');
    createAccordion();                
}

这里手风琴的创作被抽象为一个单独的方法,因为它必须使用两次。

答案 1 :(得分:3)

您的问题是删除手风琴功能附加到的原始DOM对象。仅仅因为你添加新的并不意味着它是一回事。它们是完全新的元素,因此你必须再次在它们上面运行手风琴功能。这就像我可以让它听起来一样笨拙。

所以试试这个......

function clearAndAdd() {

            $("#content").empty();
            $("#content").append('<div id="a">DIV ID A</div><div id="aa">DIV ID AA</div><div id="b">DIV ID B</div><div id="bb">DIV ID BB</div>');
            $("#content").accordion();
        } 

如果最后一个新行不起作用,请尝试使用

$("#content").accordion('destroy').accordion();