Recimo da ste namjeravali uključiti cijelu hrpu stranica, a unutar tog dijela htjeli ste napraviti neke stvari specifične za jQuery. Na toj je stranici možda već ne mora biti učitan jQuery. Ako to već učini, ne želite ga ponovo učitati, ali ako ne, želite. Ovo radi za to.
Pametan asinkroni način
// Only do anything if jQuery isn't defined if (typeof jQuery == 'undefined') ( if (typeof $ == 'function') ( // warning, global var thisPageUsingOtherJSLibrary = true; ) function getScript(url, success) ( var script = document.createElement('script'); script.src = url; var head = document.getElementsByTagName('head')(0), done = false; // Attach handlers for all browsers script.onload = script.onreadystatechange = function() ( if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) ( done = true; // callback function provided as param success(); script.onload = script.onreadystatechange = null; head.removeChild(script); ); ); head.appendChild(script); ); getScript('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', function() ( if (typeof jQuery=='undefined') ( // Super failsafe - still somehow failed… ) else ( // jQuery loaded! Make sure to use .noConflict just in case fancyCode(); if (thisPageUsingOtherJSLibrary) ( // Run your jQuery Code ) else ( // Use .noConflict(), then run your jQuery Code ) ) )); ) else ( // jQuery was already loaded // Run your jQuery Code );
Primijetite kako na više mjesta postoji poziv jQuery koda koji namjeravate pokrenuti. Ne ponavljajte se tamo, stavite to u funkciju koju možete pozvati da pokrenete stvari.
Ovaj je kod odavde prilagođen.
Dokument.pisati način
Hip djeca ne koriste document.write, ali ako ste prestari da biste se brinuli:
var jQueryScriptOutputted = false; function initJQuery() ( //if the jQuery object isn't available if (typeof(jQuery) == 'undefined') ( if (! jQueryScriptOutputted) ( //only output the script once… jQueryScriptOutputted = true; //output the script (load it from google api) document.write(""); ) setTimeout("initJQuery()", 50); ) else ( $(function() ( // do anything that needs to be done on document.ready // don't really need this dom ready thing if used in footer )); ) ) initJQuery();