未定义的不是函数:如何让LABjs使用jQuery脚本

时间:2014-05-27 08:58:36

标签: javascript jquery labjs

我正在尝试使用LABjs来改善网页的加载时间。但是我在jQuery.cookie('mycookie')中得到了'Undefined not a function',我在我自己的jQuery脚本中使用它。

我很感激有关如何实现LABjs的一些建议,因为我不太了解这些文档。

这是我到目前为止的代码:

HTML

我在HTML页面的页脚中有jQuery和LAB.min.js

<script type="text/javascript" src="myfolder/jquery1.9.1.js"></script>
<script type="text/javascript" src="myfolder/LAB.min.js"></script>

LAB.min.js文件

这里我按顺序加载脚本。 ratings.js依赖于jquery-cookie.js,所以我先包含一个wait()来确保首先加载jquery-cookie.js。

//ALL THE LABjs code is here, but not included on this post!

$LAB.setGlobalDefaults({Debug:true});
.script("myfolder/bootstrap.min.js")
.script("myfolder/jquery-cookie.js") 
.wait() 
.script("myfolder/ratings.js");

ratings.js

ratings.js是jQuery(document).ready函数中包含的一段很长的代码。

jQuery(document).ready(function() {
 //LOTS OF CODE HERE
    if(jQuery.cookie('mycookie')==null){    
        //LOTS OF CODE HERE
    }   
//LOTS OF CODE HERE
});

我在ratings.js中收到与包含jQuery.cookie('mycookie')的代码行有关的错误。它说“未捕获类型错误:未定义不是函数”

据我所知,当我尝试将它传递给.wait()时,jQuery.cookie()尚未定义。什么是让它工作的最佳方法,记住我想将ratings.js保存在一个单独的js文件中,因为它包含大量代码,并且是许多类似的js文件之一,当它们也会抛出相同的错误时我用LABjs加载它们。

非常感谢!

凯蒂

1 个答案:

答案 0 :(得分:1)

您应该能够在HTML中删除指向jQuery的链接,并且只需要LABJS来加载所有脚本。这将在Bootstrap或你的插件之前加载jQuery:

$LAB
  .setGlobalDefaults({Debug:true}) // removed semi-colon
  .script("myfolder/jquery1.9.1.js")
  .wait()
  .script("myfolder/bootstrap.min.js")
  .script("myfolder/jquery-cookie.js") 
  .wait() 
  .script("myfolder/ratings.js");

(请注意,您的代码中有一个分号,可能会破坏某些内容):

相关问题