通过 ajax 加载时 MaterialDesign、JS 行为丢失

MaterialDesign, JS behaviors lost when loaded through ajax

我从 Ajax、jQuery 等等开始,如果我在这里犯了愚蠢的错误,我深表歉意。 我正在使用 PHP/JS 构建网站,并使用 Google 的 Material 设计规范和 CSS:https://getmdl.io/components/

我的页面是这样构建的: - index.php,这是主页(带有指向 css、js 文件等的链接...) - 包含一个 div,其中加载了其他 php "modules"(不同的 php 文件,仅包含一些需要的部分)。

我的问题是,在这些加载的页面中,Material 设计 类 的每个 "special" 行为都完全丢失(按钮上没有 "ripple effect",文本字段标签不' 消失因此与文本字段内容重叠,等等......)。 css 样式很好(显示 material 设计颜色,视觉上效果很好)但点击时的行为等...

知道如何解决这个问题吗? 非常感谢!

在深入研究 jQuery githubs 问题报告后找到了解决方案。似乎组件在通过 AJAX.

加载时没有被 DOM 升级

必须在通过 AJAX 加载的页面中添加以下调用:

 componentHandler.upgradeDom();

要么通过函数调用,要么通过ajax完成监听,例如:

 $('body').ajaxComplete(function () {
      componentHandler.upgradeDom();
 });