我的腳本如下,我首先使用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();
它會工作這是我想避免的。我不想在每個頁面中聲明它,而是想在頂層定義一次。
什麼是ConversekitJs? –
命名空間,我給了...但它的做錯了..請更正它 – 112233
你不能從回調 –