您将看到单击 divA 时,divAA 会向下滑动。单击 divB 时,divBB 将向下滑动。
清除主 DIV 并再次附加相同的内容后,手风琴停止工作,如本演示所示:http: //jsfiddle.net/p7vUk/2/
有人可以解释为什么它停止工作以及如何解决它吗?
您将看到单击 divA 时,divAA 会向下滑动。单击 divB 时,divBB 将向下滑动。
清除主 DIV 并再次附加相同的内容后,手风琴停止工作,如本演示所示:http: //jsfiddle.net/p7vUk/2/
有人可以解释为什么它停止工作以及如何解决它吗?
试试这个。
您需要在清除之前重置手风琴小部件。仅调用.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();
}
在这里,手风琴的创建被抽象为一个单独的方法,因为它必须使用两次。
您的问题是删除了手风琴功能附加到的原始 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();