Zurb foundation 更新已经有插件的元素 < ZURB基金会5.5.3/P>

Zurb foundation 更新已经有插件的元素 < ZURB基金会5.5.3/P>,zurb-foundation,Zurb Foundation,我有一个手风琴菜单,需要在初始页面加载后通过ajax更新。因此,最初菜单包含2项,然后是$(document).foundation()被调用。在收到ajax响应之后,在菜单中添加(并可能删除/替换)元素 我希望能够重新使用相同的元素,但是,我不能更新插件来重新设置更改的元素的样式。我试过: $(“#我的菜单”).foundation()不起作用并显示错误: 试图在已经有基础插件的元素上初始化手风琴菜单。 Foundation.reflow(菜单“手风琴”)这不起作用 menu.foundat

我有一个手风琴菜单,需要在初始页面加载后通过ajax更新。因此,最初菜单包含2项,然后是
$(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"));
    

    很好的解决方案!我遇到了和你一样的问题,你的方法帮了我很多!!谢谢我尝试了很多方法来重新初始化手风琴菜单,但都没有成功;