如何防止我的课程从 mmenu 插件中删除?

Posted

技术标签:

【中文标题】如何防止我的课程从 mmenu 插件中删除?【英文标题】:How can I keep my classes from being removed from mmenu Plugin? 【发布时间】:2019-01-02 23:16:08 【问题描述】:

我目前正在使用 mmenu jquery 插件。 http://mmenu.frebsite.nl/documentation/core/off-canvas.html

当触发 mmenu 插件时,有没有办法保留在我的导航项中使用的类名?它们已被删除,并且我有需要设置样式的菜单项的标题。

供参考:

<ul>
   <li><a class="dropdown-item nav-heading" href="#">Coffee Services</a></li>
   <li><a class="dropdown-item" href="#">Quality Equipment</a></li>
   <li><a class="dropdown-item" href="#">Our Coffees</a></li>
</ul>

变成:

<ul class="mm-listview">
  <li class="mm-listitem"><a href="#">Coffee Services</a></li>
  <li class="mm-listitem"><a href="#">Quality Equipment</a></li>
  <li class="mm-listitem"><a href="#">Our Coffees</a></li>
</ul>

我需要保留“导航标题”类!

【问题讨论】:

【参考方案1】:

通过一些测试,我发现该插件会删除所有附加到任何divalispan 的类。如果您将类添加到 li 标签内的任何其他元素,它确实会被复制。因此,如果要复制类,可以使用 i 元素。例如:

<li>
    <a class="dropdown-item" href="#">
        <i class="nav-heading">
            Coffee Services
        </i>
    </a>
</li>

这将像这样被复制:

<li class="mm-listitem">
    <a href="#" class="mm-listitem__text">
        <i class="nav-heading">
            Coffee Services
        </i>
    </a>
</li>

然后在您的 CSS 计数器中添加 i 标签的样式,并添加您自己的样式:

.nav-heading 
    font-style: initial;

    // Add your styling

【讨论】:

【参考方案2】:

我不确定您面临什么情况。但是如果我发现这个问题,我会使用 Mutation Observer 来检测 HTML 元素的变化。当您检测到元素的任何变化(类属性发生变化)时,您可以将“导航标题”插入到类属性中。

https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

【讨论】:

【参考方案3】:

如果插件本身删除了您的类,则与此无关,但您可以动态添加所需的类。使用这个 sn-p 可能会对您有所帮助。

$(document).ready(function()
    $('.mm-listitem:eq(0)').addClass('nav-heading');
    $('.mm-listitem').on('click', function()
        $('.mm-listview > *').removeClass('nav-heading');
        $(this).addClass('nav-heading');
    )
);

【讨论】:

以上是关于如何防止我的课程从 mmenu 插件中删除?的主要内容,如果未能解决你的问题,请参考以下文章

jquery-mmenu:防止点击关闭

mmenu 帮助 - 如何将“Selected”类添加到当前页面(可能使用“currentItem”插件)

使用python在blender中注销并删除插件不会从菜单中删除该项目

如何挂钩 MMenu 事件?

如何防止我的用户从 iPod 中删除 MP3 文件

如何将jquery mmenu更改为从右侧打开? [关闭]