2016-08-09 23 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

相关问题