2016-08-09 49 views
1

我的腳本如下,我首先使用javascript來動態加載jquery。一旦加載,我想命名空間jquery的$,以便我可以在整個我的網站使用另一個名稱。例如,我不想致電$('body').,我想致電MYNAMESPACE('body')。但是我無法正確完成namaspacing。請幫助我。謝謝..如何在我的站點中使用jquery名稱空間

(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'); 


    }); 


})(); 

編輯根據答案通過RJ建議:

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) 

在events.js

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

但是,如果我在頁面的頂部添加VAR myNameSpace = jQuery.noConflict();它會工作這是我想避免的。我不想在每個頁面中聲明它,而是想在頂層定義一次。

+0

什麼是ConversekitJs? –

+0

命名空間,我給了...但它的做錯了..請更正它 – 112233

+0

你不能從回調 –

回答

0

您可以使用jQuery.noConflictIIFE

var myNameSpace = jQuery.noConflict(); 

    (function(myNameSpace) { 

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

    })(myNameSpace) 
+0

說我包含myNameSpace.getScript(「/ js/events.js」);裏面的IIFE ..如何可以使用myNameSpace那裏的文件,而不是$ ..這是我的關注 – 112233

+0

請參閱我編輯的職位pls – 112233

相關問題