मान लें कि आप पृष्ठों के एक पूरे समूह में शामिल करने जा रहे हैं, और उसके अंदर आप कुछ jQuery के विशिष्ट सामान करना चाहते हैं। उस पृष्ठ में पहले से ही jQuery लोड हो सकता है या नहीं भी हो सकता है। यदि यह पहले से ही है, तो आप इसे फिर से लोड नहीं करना चाहते हैं, लेकिन यदि आप ऐसा नहीं करते हैं। इसके लिए काम करता है।
स्मार्ट अतुल्यकालिक रास्ता
// 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 );
ध्यान दें कि आप जिस jQuery कोड को चलाने के लिए कहते हैं, उसे चलाने के लिए कई स्थान हैं। वहाँ अपने आप को दोहराएं नहीं, इसे एक फ़ंक्शन में रखें जिसे आप चीजों को किक करने के लिए कॉल कर सकते हैं।
यह कोड यहाँ से अनुकूलित किया गया था।
डॉक्यूमेंट.राइट तरीका
हिप बच्चे डॉक्यूमेंट का उपयोग नहीं करते हैं, लेकिन यदि आप देखभाल के लिए बहुत पुराने हैं:
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();