我正在使用LABjs进行并行js加载。

但是,由于某些奇怪的原因,我在调试控制台中看到“未定义$”的错误。

我的代码如下:

<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不高兴。

感谢您的任何帮助!

最佳答案

尝试这个:

<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>


其他注意事项:


删除最终的empty / noop .wait()函数,该函数不再需要了。
LABjs不应加载modernizr ...您应按照IIRC所说的文档加载该文档,该文档应在文档顶部的普通<script>标记中。
我的猜测是此链中的某些.wait()是不必要的。例如,我猜想在“ jquery-slider”和“ jquery-watermark” script()调用之后就不需要它们了,因为我敢打赌它们彼此不依赖,因此可以相对于彼此以任何ASAP顺序运行其他,只要他们确保在jQuery完成后就可以运行(这就是为什么我在代码段中添加了.wait()调用中的注释!)

09-12 02:15