2012-05-29 63 views
4

我想爲我的客戶提供一個簡單的代碼來插入並獲取我的插件。如何在外部.js文件中包含jQuery?

代碼:

<div id='banner-lujanventas'></div> 
<script src="http://lujanventas.com/plugins/banners/script.js" type="text/javascript"></script> 

的問題是,我的插件只用jQuery工作。如何檢查jQuery的版本是否安裝在我的script.js文件中,是否包含它? (我只能修改我/script.js文件)

回答

5

使自己的腳本元素:

if (typeof jQuery === "undefined") { 
    var script = document.createElement('script'); 
    script.src = 'http://code.jquery.com/jquery-latest.min.js'; 
    script.type = 'text/javascript'; 
    document.getElementsByTagName('head')[0].appendChild(script); 
} 

//edit 
window.onload = function() { 
    $(function(){ alert("jQuery + DOM loaded."); }); 
} 

你必須把你的真實的onload代碼在window.onload()函數,而不是在$(document).ready()函數中,因爲jquery.js此時不需要加載。

+1

要小心,如果jQuery沒有定義'if(!jQuery)'會拋出一個錯誤。你應該做'if(typeof jQuery ===「undefined」)' – NicoSantangelo

+0

這似乎是一個很棒的選擇。我會立即嘗試 – lisovaccaro

+0

它包括它很好,但jQuery不起作用。我在你的代碼後面添加了一個事件監聽器$(function(){alert(「jQuery + DOM loaded。」);});'並且它顯示警報。我怎樣才能解決這個問題? – lisovaccaro

1

事情是這樣的:

<script>!window.jQuery && document.write(unescape('%3Cscript src="http://yourdomain.com/js/jquery-1.6.2.min.js"%3E%3C/script%3E'))</script> 
+0

這被認爲是在一個外部的.js。我不認爲這是它的目的。或者是? – lisovaccaro

2

您可以檢查jQuery的變量

if (typeof jQuery === 'undefined') { 
    // download it 
} 

要下載的選項,例如與document.write異步,請查看this article

0

我挖出了一些舊的代碼,如果它沒有找到,再加上它避免了衝突的任何現有的jQuery的頁面已經使用,以查找jQuery和加載它的特定版本:

// This handles loading the correct version of jQuery without 
// interfering with any other version loaded from the parent page. 
(function(window, document, version, callback) { 
    var j, d; 
    var loaded = false; 
    if (!(j = window.jQuery) || version > j.fn.jquery || callback(j, loaded)) { 
     var script = document.createElement("script"); 
     script.type = "text/javascript"; 
     script.src = "http://code.jquery.com/jquery-2.1.0.min.js"; 
     script.onload = script.onreadystatechange = function() { 
      if (!loaded && (!(d = this.readyState) || d == "loaded" || d == "complete")) { 
       callback((j = window.jQuery).noConflict(1), loaded = true); 
       j(script).remove(); 
      } 
     }; 
     (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script); 
    } 
})(window, document, "2.1", function($) { 
    $(document).ready(function() { 
     console.log("Using jQuery version: " + $.fn.jquery); 

     // Your code goes here... 

    }); 
});