2016-08-09 25 views
1

In meinem Skript unten verwende ich Javascript, um JQuery zuerst dynamisch zu laden. Sobald geladen, möchte ich Namespace Jquery $, so dass ich einen anderen Namen für meine Website verwenden kann. Zum Beispiel, anstatt $('body'). anzurufen, möchte ich MYNAMESPACE('body') anrufen. Aber ich kann den Namaspacing nicht richtig machen. Bitte helfen Sie mir dabei. Dank ..Wie Namespace Jquery auf meiner Website verwendet werden

(function() { 

    function loadScript(url, callback) { 

     var script = document.createElement("script") 
     script.type = "text/javascript"; 

     if (script.readyState) { //IE 
      script.onreadystatechange = function() { 
       if (script.readyState == "loaded" || script.readyState == "complete") { 
        script.onreadystatechange = null; 
        callback(); 
       } 
      }; 
     } else { //Others 
      script.onload = function() { 
       callback(); 
      }; 
     } 

     script.src = url; 
     document.getElementsByTagName("head")[0].appendChild(script); 
    } 

    loadScript("/plugins/system/conversekit/js/jquery.js", function() { 

     //jQuery loaded 
     alert('jquery loaded'); 
     var cKit = (function($){ 


      var loadScripts = function(){ 
       var jq = $.noConflict(); 
       return jq; 
      } 
      return { 
       ConversekitJs : loadScripts// I expect this to return namespaced jquery 
      }; 
     } 

     })(jQuery); 
      var js = cKit.ConversekitJs(); //function call 

      //so that I may use jq instead of $ or jQuery 
      js('body').css('background-color', '#ff0000'); 


    }); 


})(); 

EDIT basierend auf Antwort von RJ vorgeschlagen:

var myNameSpace = jQuery.noConflict(); 

     (function(myNameSpace) { 

      //Use your namespace 
      myNameSpace('body').css('background-color', '#ff0000');//works 
      myNameSpace.getScript("/js/events.js");//in this file myNameSpace has no effect.. 

     })(myNameSpace) 

In events.js

myNameSpace('body').css('background-color', '#ff0000');//doesn't work 

Aber wenn ich var myNameSpace = jQuery.noConflict(); oben auf der Seite hinzufügen würde es funktionieren ..Das ist was ich vermeiden will. Anstatt dies auf jeder Seite zu deklarieren, möchte ich einmal in der obersten Ebene definieren.

+0

Was ConversekitJs ist? –

+0

Namespace, die ich gab ... aber es ist falsch gemacht..pls korrigieren – 112233

+0

Sie können nicht cKit von Rückruf –

Antwort

0

können Sie jQuery.noConflict mit IIFE verwenden

var myNameSpace = jQuery.noConflict(); 

    (function(myNameSpace) { 

     //Use your namespace 
     myNameSpace('body').css('background-color', '#ff0000'); 

    })(myNameSpace) 
+0

sagen, dass ich meinNameSpace.getScript ("/ js/events.js"); innerhalb der IIFE..wie kann ich meinNameSpace dort in dieser Datei anstelle von $ .. das ist mein Anliegen – 112233

+0

Bitte beziehen Sie sich auf meine editierten Post pls – 112233