【问题标题】:How to reuse an entire mmenu instance如何重用整个 mmenu 实例
【发布时间】:2018-06-06 06:38:49
【问题描述】:
我有这个 mmenu 实例,我在其中从 ajax 动态添加内容,正如插件页面上所述。
现在我不仅想动态添加子关卡,我还想丢弃所有关卡并在现有 mmenu 实例中添加新的第一关。
我尝试调用API.initPanels($("#mm-0")),尝试在再次初始化 mmenu 插件之前从 mmenu 添加的 DOM 元素中删除所有类,但它不会呈现正确的菜单。我添加的 UL 和 LI 保持不变。
【问题讨论】:
标签:
javascript
jquery
mmenu
【解决方案1】:
知道了,方法如下:
API.closeAllPanels();
var mmenuActual = API.getInstance();
var $panels = mmenuActual.$pnls.children();
var $updateContainer = $panels.first().find(".mm-listview");
$updateContainer.replaceWith(newContent);
$panels.not(":first").remove();
API.initPanels($panels);
首先,我们需要关闭所有面板以将 mmenu 设置回其只有顶层可见的初始状态。
接下来,我们需要获取所有面板和第一个面板的 .mm-listview,因为这是 mmenu 渲染第一级的地方。
然后我们用我们的新内容更新第一关的来源。更新该元素的 innerHTML 或像我一样交换它都没关系。
其余的面板现在已经过时了,我们都扔掉了。
最后,我们告诉 mmenu 初始化所有面板