2012-05-26 27 views
2

我使用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 :(

我也許應該加入$(文件)。就緒輪後者的代碼?但似乎打亂labjs。

感謝提前任何幫助

+0

爲什麼你使用jQuery 1.5而不是更新的版本的任何理由? – Spudley

+0

我已經更新了js到最新的jquery沒有區別 – bjohnb

回答

0

我剛剛意識到隱藏在一個包括頁腳是另一個調用我的effects.js文件。但這是在正常的腳本標籤。這將解釋爲什麼它運行時出現錯誤,然後工作,因爲它被稱爲兩次,一次在labjs中,一次沒有。什麼是白癡:(感謝您嘗試,儘管每個人!對不起!

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> 

其他一些注意事項:

  1. 回覆移動最後的空/ noop .wait()函數,它不再需要(再)。
  2. modernizr不應該由LABjs加載......您應該根據IIRC聲稱它應該在文檔頂部的正常<script>標記中的文檔加載該文檔。
  3. 我的猜測是你在這條鏈上的一些.wait()是不必要的。例如,我的猜測是在「jquery-slider」和「jquery-watermark」調用之後不需要它們,因爲我敢打賭,它們並不相互依賴,因此可以在任何ASAP順序中相對於彼此運行,只要是已經確定的jQuery後運行完成(這就是爲什麼我在段提出的意見,以在.wait()添加調用!
+0

正確,我已經相應地更改了代碼,但它沒有區別! bjohnb

+0

你需要把一個鏈接重現的情況下......不知道還有什麼建議 –

+0

Ohhhhhhh不,我剛剛意識到隱藏在頁腳中的包含是另一個呼叫我的effects.js文件,但這是在正常的腳本標記,這將解釋爲什麼它運行時出現錯誤,然後工作,因爲它被稱爲兩次。 – bjohnb

相關問題