微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Materialise sidenav collapsible 在单独的 JS 文件中不起作用

如何解决Materialise sidenav collapsible 在单独的 JS 文件中不起作用

抱歉,如果之前已经回答过这个问题;我到处找,但找不到。我通过调用 M.AutoInit() 来使用 Materialize sidenav,它对我有用,直到我尝试将它放在单独的 Javascript 文件中。我已经能够以这种方式设置我的页脚,所以我没有重复代码,但这似乎不适用于 sidenav。 Sidenav 出现,但可折叠部分不会打开。

我认为问题在于它不喜欢从动态插入的 HTML 中调用可折叠部分。但是我尝试将可折叠部分(使用 2 个不同的查询选择器)分离出来,但它也不起作用。如果我至少将 sidenav 的一部分放回我的 HTML 页面,我这样做的目的就会落空。

有什么想法或解决方案吗?感谢观看!

document.addEventListener("DOMContentLoaded",() => {
  M.AutoInit()

  document.querySelector('header').insertAdjacentHTML('afterbegin',`<ul id="slide-out" class="sidenav sidenav-fixed">
      <li>
        <a
          href="https://www.greece.org/"
          target="_blank"
          rel="noopener noreferrer"
          >HEC Main</a
        >
      </li>
      <li>
        <a href="index.html" class="sidenav-close" rel="noopener noreferrer"
          >Home</a
        >
      </li>
      <li class="no-padding">
        <ul class="collapsible collapsible-accordion">
            <li>
            <button class="collapsible-header">
              History<i class="material-icons">arrow_drop_down</i>
            </button>
            <div class="collapsible-body">
              <ul class="sidenav-close">
                <li>
                  <a href="a-brief-review.html">A Brief Review</a>
                </li>
                <li><a href="philosophers-list.html">Philosophers List</a></li>
                <li><a href="philosophers-map.html">Philosophers Map</a></li>
                <li><a href="the-beginning.html">The Beginning</a></li>
                <li><a href="socrates.html">Socrates</a></li>
                <li><a href="plato.html">Plato</a></li>
                <li><a href="aristotle.html">Aristotle</a></li>
                <li>
                  <a href="bibliography-references.html"
                  >Bibliograpy / References</a
                  >
                </li>
              </ul>
            </div>
          </li>
        </ul>
      </li>
      <li class="divider"></li>
      <li>
        <a href="media.html" class="sidenav-close">Media</a>
      </li>
      <li>
        <a href="events.html" class="sidenav-close">Events</a>
      </li>
    </ul>`)

  document.querySelector('main').insertAdjacentHTML('afterend',`<footer class="page-footer">
        <div class="container">
          <p class="center-align">
            Philosophy is sponsored by
            <a
              href="https://www.greece.org"
              target="_blank"
            >
              www.greece.org 
            </a> | &copy; 2021 All Rights Reserved.
          </p>
        </div>
       <div class="fixed-action-btn">
        <a href="#top" class="btn-floating btn-large" style="background-color: silver;">
          <i class="large material-icons">arrow_upward</i>
        </a>
      </div>
    </footer>`)
})

解决方法

初始化是一次性的——它扫描匹配选择器的文档,并在其上运行初始化。因此,始终在添加任何动态内容后运行初始化。如果您即时添加内容,只需再次运行 init。

Codepen

document.addEventListener('DOMContentLoaded',function() {
   // Always add stuff to the page BEFORE running the init
   // Anything hardcoded to the page will be fine if wrapped in a document ready.
   M.AutoInit();
   // Anything added after the init will NOT be initialised. It's a one time thing. Run the init at the end of any dynamic additions.
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?