如何重用整个 mmenu 实例

How to reuse an entire mmenu instance

我有这个 mmenu 实例,我在其中动态添加来自 ajax 的内容,就像插件页面上描述的那样。

现在我不仅想动态添加子关卡,我还想扔掉所有关卡,为现有的 mmenu 实例添加一个新的第一关卡。

我试过调用 API.initPanels($("#mm-0")),我试过从 DOM 元素中删除所有 类,这些元素是在再次初始化 mmenu 插件之前由 mmenu 添加的,但它不会呈现适当的菜单。我添加的 UL 和 LI 保持不变。

知道了,方法如下:

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初始化所有面板