0

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

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

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

4

2 回答 2

4

试试这个

您需要在清除之前重置手风琴小部件。仅调用.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();                
}

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

于 2012-08-09T03:21:45.263 回答
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();
于 2012-08-09T03:22:24.250 回答