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

时间:2016-08-22 09:49:19

标签: 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>

警告由foundation.js180处的以下代码触发:

// 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;
      }

我从头开始尝试re-installing,但它仍然无效。 类似的问题存在于Zurb基金会论坛,但到目前为止还没有很好的答案。

如何解决此问题?

2 个答案:

答案 0 :(得分:4)

<强>更新

对于版本6.4。* ,如果在{1}}中提到plugins,则所有基于js$(document).foundation();的元素往往只能 html文件。因此,如果您已将其写入,请将其从app.js中删除。有其他原因,请参阅下面的说明。

虽然我已经在问题的comments中提到了答案,但我觉得用更多的点来写它会更好。

使用Zurb Foundation 6(命令行)安装bower时,它会为您提供一个很好的index.html页面,其中包含引用{<script>的{​​{1}}标记1}} js文件位于external。默认情况下,root\js\app.js文件具有以下代码:

app.js

所以基本上,你已经掌握了一切。

但是,在基金会6和我不知道这些变化之前,这不是它的工作方式。我没有查看$(document).foundation(); //invoke all jQuery based Foundation elements 的内容,因为我认为它是。我只是通过编写以下代码来完成在我的app.js页面中调用它们的旧方法:

html

这种 double 引用了基于jQuery的Foundation元素,在浏览器控制台上引发<script type="text/javascript"> $(document).foundation(); </script>

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

  1. 外部引用需要额外的external个请求,非常轻微增加宝贵的页面加载时间。如果可以的话,为什么不减少呢。
  2. 必须尽早在网站中调用基于jQuery的元素,以便每个元素都能立即获得原始形状。因此,在html页面中提及调用而不是请求外部文件调用更有意义。 因此,删除外部js文件中提到的代码,即您的http文件。警告会消失。
  3. 对于版本6.4。* ,如果在app.js中提及,则所有基于pluginsjs的元素往往只能 文件。

答案 1 :(得分:1)

此问题的最佳解决方案是将 $(document).foundation(); 放在 {下的 <script> 标记内{1}} 文件,并将其从外部.html文件(.js)中删除

像这样 - ,

in

  

<强> app.js

xyz.html

其他解决方案,例如,将其放在外部<script type="text/javascript"> $(document).foundation(); </script> 文件(.js)中,并将其从app.js文件中删除,并不总是有效。

至少它对我不起作用。

经过测试 -

  

基础版本6.4.2