2013-02-17 126 views
1

我已經與Codeigniter集成鍋爐板。我正在使用codeigniter模板。當我在頁面中調用任何jQuery內聯函數時,它會在控制檯中顯示'$ is not defined'。所以我複製了jquery代碼並將它放在main.js文件中並且它工作正常。然而,當我在這個依賴於jquery插件的頁面中包含任何腳本文件時,它會向我顯示相同的jquery未定義錯誤。請幫幫我!!Codeigniter和樣板集成 - jQuery undefined問題

回答

1

@WillemLabu是正確的,在定義之前不能使用jQuery。 jQuery包含在頁面中後,您必須放置使用jQuery的腳本。

Boilerplate將腳本放在頁腳中,因爲典型的應用程序會從腳註中的外部腳本運行它們的javascript。

的解決方案是

  1. 將jQuery的在頭部;或
  2. 將jQuery放入腳中,並將內聯腳本附加到jQuery包含的對象後面。

你可以做到這一點是這樣的:

head.php

<html> 
<head> 
... 
<!-- define a global object to attach your scripts to --> 
<script type="text/javascript">APP_READY = { callbacks: []};</script> 
</head> 

yourView.php

<!-- add your inline scripts inside the APP_READY namespace --> 
<script type="text/javascript"> 
// MODULE 
APP_READY.callbacks.push(function() { 

    alert('simple example of APP_READY Callback'); 

}); 
</script> 

anotherView.php

<script type="text/javascript"> 
// MODULE 
APP_READY.callbacks.push(function() { 

    var exampleModule = []; 

    exampleModule.init = function() { 
    alert('modular example of APP_READY Callback'); 
    }; 

    exampleModule.init(); 

}); 
</script> 

foot.php

<!-- include jQuery --> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 

<!-- execute your Object --> 
<script type="text/javascript"> 
(function($) { 
    'use strict'; 

    // Initialise the callbacks 
    // 
    for (var i =0; i<APP_READY.callbacks.length; i++) { 
    var callback = APP_READY.callbacks[i]; 

    if(callback && typeof callback == 'function') { 
     callback(); 
    } 
    } 

})(jQuery); 
</script> 
0

JavaScript按順序運行,這意味着在嘗試和使用它之前需要包含jQuery。

確保jQuery包含在嘗試使用$()jQuery()的任何其他代碼之前(上方)。

+0

感謝您的快速回復。我知道它是按順序運行的。但是如果你看看HTML5 Boiler板的設計,它會加載所有的JavaScript文件和結尾。在這種情況下該怎麼辦? – Ansuman 2013-02-17 09:00:34

+0

同樣的事情仍然適用,HTML5BP只是遵循在DOM和CSS之後加載腳本的最佳做法。重點在於,任何需要jQuery的JavaScript都需要在jQuery加載後才被包含,因爲直到那時,'$'和'jQuery'變量纔會被定義爲'undefined'。 – Labu 2013-02-17 09:20:44

+0

我同意。但我不想用所有外部JavaScript插件調用來重載頁眉/頁腳,而是希望在必要時在頁面中包含外部插件。有什麼辦法可以做到這一點? – Ansuman 2013-02-17 09:35:12