2011-11-15 52 views
6

我有一個JavaScript文件,它也使用jQuery。加載它,我寫了這個代碼:在另一個js文件中加載jQuery

function include(filename) 
{ 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.src = filename; 
    script.type = 'text/javascript'; 
    head.appendChild(script) 
} 

include('http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js'); 
alert("1"); 

$(document).read(function(){}); 
alert("2"); 

這將激活alert("1"),但第二alert不起作用。當我檢查元素時,我看到一個錯誤,表示$未定義。

我應該如何解決這個問題?

回答

20

您需要執行一次腳本加載任何jQuery的特定代碼,這顯然會追加到頭部後,在更晚的點發生在時間:

function include(filename, onload) { 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.src = filename; 
    script.type = 'text/javascript'; 
    script.onload = script.onreadystatechange = function() { 
     if (script.readyState) { 
      if (script.readyState === 'complete' || script.readyState === 'loaded') { 
       script.onreadystatechange = null;             
       onload(); 
      } 
     } 
     else { 
      onload();   
     } 
    }; 
    head.appendChild(script); 
} 

include('http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js', function() { 
    $(document).ready(function() { 
     alert('the DOM is ready'); 
    }); 
}); 

而這裏是live demo

您也可以看看腳本加載器,如yepnopeRequireJS,這使得這項任務更容易。

+3

+1不需立即訴諸腳本加載器即可得到詳細的答案(這可能是我會做的:) –

相關問題