jQuery を必要とするスクリプトに取り組んでいます。jQuery がロードされているかどうかに関係なく、Web サイトにロードされます。自分のバージョンの jQuery をグローバル名前空間の外にロードして、匿名関数の外からアクセスできないようにする方法はありますか?
2 に答える
6
必要はありません。noConflict を適切に使用してください。それが意図された目的です。
<script src="jquery.js"></script>
<script src="someplugin.js"></script>
<script>
(function($){
$.doSomething();
})($.noConflict(true));
</script>
状況にもよりますが、通常は、コードを含める前にクライアントに jquery を含めるよう要求する方が適切です。(Polaris878はあなたの質問へのコメントでこれをほのめかしました)
于 2013-06-06T19:37:47.503 に答える
1
まず、jQuery が既にロードされているかどうかを確認する必要があります。ロードされている場合は、それを使用するだけです。それ以外の場合は、jQuery をロードして使用します。シンプルな JavaScript で可能になります
myjQ = null;
if (typeof window.jQuery == 'undefined') {
load_script('http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js', callback_fn );
} else {
callback_fn();
}
load_script = function(url, callback) {
var script = document.createElement("script");
script.type = "text/javascript";
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
};
callback_fn = function(){
myjQ = jQuery.noConflict();
// you can use myjQ just like $ here.
}
これらすべての関数をオブジェクトにラップして、グローバル名前空間を汚染しないようにすることができます。
于 2013-06-06T19:43:57.820 に答える