基础6 - 控制台警告:试图在已经有Foundation插件的元素上初始化magellan(任何JS插件)

Har*_*ker 8 javascript jquery zurb-foundation bower

我安装Foundation 6使用bower.我warning每次使用任何时候都会在控制台中获得多个Foundation 6 - JavaScript based plugin.

确切的警告:

试图在已经有一个Foundation插件的元素上初始化magellan.

我的脚本包括:

<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/what-input/what-input.js"></script>
<script src="bower_components/foundation-sites/dist/foundation.js"></script>
<script src="js/app.js"></script>
<script type="text/javascript">
        $(document).foundation();  
</script>
Run Code Online (Sandbox Code Playgroud)

该警告是由存在于下面的代码触发foundation.js的行180:

// For each plugin found, initialize it
    $elem.each(function () {
      var $el = $(this),
          opts = {};
      // Don't double-dip on plugins
      if ($el.data('zfPlugin')) {
        console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin.");
        return;
      }
Run Code Online (Sandbox Code Playgroud)

re-installing从头开始尝试但它仍然无效.类似的问题存在于Zurb基金会论坛,但直到现在还没有好的答案.

我该如何解决这个问题?

Har*_*ker 5

更新

对于6.4版本。*,所有pluginsjs基础要素往往工作如果$(document).foundation();是中提到的html文件。因此,app.js如果您已经写过,请删除它。出于其他原因,请阅读以下说明。


尽管我早在comments问题的开头就已经提到了答案,但我认为最好再多加一点就可以了。

Zurb Foundation 6使用bower(命令行)安装时,它为您提供了一个不错的index.html入门页面,该页面的<script>标签指向处的externaljs文件root\js\app.jsapp.js默认情况下,该文件具有以下代码:

$(document).foundation(); //invoke all jQuery based Foundation elements
Run Code Online (Sandbox Code Playgroud)

因此,基本上,您已经拥有开始的一切。

但是,直到Foundation 6才开始运作,而我还没有意识到这些变化。我并没有仔细考虑内容的情况,app.js因为我认为它是空的。我只是html通过写以下代码来完成了在页面中调用它们的旧方法:

<script type="text/javascript">
  $(document).foundation();
</script>
Run Code Online (Sandbox Code Playgroud)

这种双重引用warning在浏览器控制台上引发了一个基于jQuery的Foundation元素。

解决方案是删除任何一个调用,但实际上删除externaljs文件中编写的代码更有意义,原因如下:

  1. 外部引用需要额外的http请求,从而略微增加了宝贵的页面加载时间。如果可以,为什么不减少它。
  2. 必须尽早调用站点中基于jQuery的元素,以便每个元素都能立即获得原始形状。因此,在HTML页面中提及调用比请求外部文件调用更有意义。因此,删除外部js文件(即您的app.js文件)中提到的代码。警告将消失。
  3. 对于6.4版本。*,所有pluginsjs基础要素往往工作只有当内提到的html文件。