Zurb foundation 更新已经有插件的元素 < ZURB基金会5.5.3/P>
我有一个手风琴菜单,需要在初始页面加载后通过ajax更新。因此,最初菜单包含2项,然后是Zurb foundation 更新已经有插件的元素 < ZURB基金会5.5.3/P>,zurb-foundation,Zurb Foundation,我有一个手风琴菜单,需要在初始页面加载后通过ajax更新。因此,最初菜单包含2项,然后是$(document).foundation()被调用。在收到ajax响应之后,在菜单中添加(并可能删除/替换)元素 我希望能够重新使用相同的元素,但是,我不能更新插件来重新设置更改的元素的样式。我试过: $(“#我的菜单”).foundation()不起作用并显示错误: 试图在已经有基础插件的元素上初始化手风琴菜单。 Foundation.reflow(菜单“手风琴”)这不起作用 menu.foundat
$(document).foundation()代码>被调用。在收到ajax响应之后,在菜单中添加(并可能删除/替换)元素
我希望能够重新使用相同的元素,但是,我不能更新插件来重新设置更改的元素的样式。我试过:
$(“#我的菜单”).foundation()代码>不起作用并显示错误:
试图在已经有基础插件的元素上初始化手风琴菜单。
Foundation.reflow(菜单“手风琴”)代码>这不起作用
menu.foundation('reflow')代码>不起作用并显示错误:
未捕获引用错误:很抱歉,“回流”不是AccordionMenu的可用方法
我通过销毁和删除现有菜单,重新创建整个菜单,然后调用$(“#我的菜单”).foundation()使其工作代码>然而,我认为这并不理想。我发现我的问题是由于没有一个解决方案在所有3种情况下都有效:
基金会尚未初始化
基础已初始化,整个构件已更换
基金会已初始化,该元素自
除非有人有更好的答案,否则我用这种方法解决:
// this can happen before, or after code creates the menu
$(document).foundation();
console.log("foundation run");
__foundationRun = true;
...
function foundationUpdate(el) {
if (__foundationRun) {
if (el.data('zfPlugin'))
// already initialised, update it
Foundation.reInit(el);
else
// new element, initialise it
el.foundation();
}
// else leave for foundation initialise
}
....
// ... do updates (modify or replace entirely) and then:
foundationUpdate($("#my-menu"));
很好的解决方案!我遇到了和你一样的问题,你的方法帮了我很多!!谢谢我尝试了很多方法来重新初始化手风琴菜单,但都没有成功;