我正在使用LABjs来获得一些并行的js加载优点。
但是,由于一些奇怪的原因,我在调试控制台中收到“$ is not defined”的错误。
我的代码如下:
<script>
$LAB.script("http://use.typekit.com/blah.js").script("/assets/js/libs/jquery-1.5.1.min.js").script("/assets/js/libs/basic-jquery-slider.min.js").wait().script("/assets/js/libs/modernizr-1.7.min.js").script("/assets/js/libs/jquery.watermarkinput.js").wait().script("/assets/js/libs/jquery-ui-1.8.14.custom.min.js").wait().script("/assets/js/effects.js").wait(function(){});
在我的effects.js中我有。
try{Typekit.load();}catch(e){}
$('#banner').bjqs({
'width' : 980,
'height' : 212,
'showMarkers' : false,
'showControls' : false,
'centerMarkers' : false
});
一切正常,但我得到了上述错误。我不明白为什么,jquery对象应该在那里(并且必须像所有东西一样),为什么会出错?
有什么想法吗?我确定我正在使用labjs,但我认为这个错误令IE7感到不安:(
我应该在后面的代码中添加一个$(document).ready?但这似乎让labjs感到不安。
提前感谢您的帮助!
答案 0 :(得分:0)
试试这个:
<script>
$LAB
.script("http://use.typekit.com/blah.js")
.script("/assets/js/libs/jquery-1.5.1.min.js").wait() // <---- ADD THIS .wait()
.script("/assets/js/libs/basic-jquery-slider.min.js").wait()
.script("/assets/js/libs/modernizr-1.7.min.js")
.script("/assets/js/libs/jquery.watermarkinput.js").wait()
.script("/assets/js/libs/jquery-ui-1.8.14.custom.min.js").wait()
.script("/assets/js/effects.js").wait(function(){});
</script>
其他一些说明:
<script>
标签中的文档加载它。.wait()
是不必要的。例如,我的猜测是在“jquery-slider”和“jquery-watermark”script()
调用之后不需要它们,因为我敢打赌它们不依赖于彼此,因此可以在任何ASAP顺序中运行彼此之间,只要他们确保在jQuery完成后运行(这就是为什么我在代码段中添加评论以添加.wait()
电话!)答案 1 :(得分:0)
我刚刚意识到隐藏在页脚中的include是对我的effects.js文件的另一个调用。但这是在普通的脚本标签中。这可以解释为什么它运行时出现错误然后工作,因为它被调用两次,一次在labjs内部,一次没有。真是个白痴:(感谢大家尝试!对不起!