重新初始化对回调jQuery的手风琴(re-initialize jquery accordion

2019-07-01 20:01发布

我已经与页面上的某些元素得到了手风琴上的页面加载工作正常,但是在用户交互,我用ajax重建手风琴的HTML。 于是,我尝试再次重新初始化手风琴

    $('#accordion').accordion({
        active: false,
        autoHeight: false,
        clearStyle: true,
        collapsible: true,
        header: 'h3'
    });

但是......它似乎并没有服用。

呈现的HTML的新块不适用手风琴规则。 相反,它只是停留作为一个大名单开放。

我甚至试过的setTimeout()用于重新调用只是柜面它试图初始化回调返回的HTML渲染之前手风琴。

即在回调呈现的HTML是确切的相同的页面加载的(有例外发生的DOM加法当手风琴方法是有效的)

Answer 1:

数据重新填充它之前销毁手风琴。

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


Answer 2:

对我来说,完全以下工作和代码是非常明确的 - 开始使用页面加载手风琴格:

$('#accordion').accordion()

然后在任何改变我打电话:

$('#accordion').accordion( "refresh" )


从文档 :

处理加入或直接在DOM移除和重新计算手风琴面板的高度的任何报头和面板。 结果取决于内容和heightStyle选项。

这适用于所有情况:这意味着你可以使用它你添加/删除/不变后/重新创建您的内容与“手风琴”元素将重新调整自己。

你应该避免破坏和创造上的每个改变一切,这是没有意义的,当你扩展性能会下降。



文章来源: re-initialize jquery accordion on callback