0

使用に問題がありますjQuery.noConflict(true)

var jq = $.noConflict(true);

(function(jq) {
    var jq = $;
    console.log($);
})(_jQuery)

しかし、未定義のエラーが発生し続けます。jQuery を使用できるように、この関数に値を渡すのに役立つものはありますか?

編集:自動実行機能内でプラグインを実行しようとしています

(function($) {
console.log($); 

   (function($){

   })(jQuery)

})(jq)

問題は、関数が常に未定義になることですか?

4

1 に答える 1

2

おそらく、すべてのjQueryグローバルを削除し、メインのjQueryグローバルを独自の変数に割り当ててjqから、それを名前付きの引数をとる自己実行関数に渡し、自己実行内で$使用できるようにする、このようなことをするつもりだったと思います$次のように jQuery の名前として機能します。

var jq = jQuery.noConflict(true);

(function($) {
    console.log($);
})(jq);

あなたが実際にやろうとしているのが、同じページに複数のバージョンの jQuery をロードすることである場合は、次の投稿を読むことができます:同じページで複数のバージョンの jQuery を使用できますか? .

実行の原則は次のとおりです。

<!-- load jQuery 1.3.2 -->
<script type="text/javascript" src="http://example.com/jquery-1.3.2.js"></script>
<script type="text/javascript">
var jQuery_1_3_2 = $.noConflict(true);
</script>

<!-- load jQuery 1.8.2 -->
<script type="text/javascript" src="http://example.com/jquery-1.8.2.js"></script>
<script type="text/javascript">
var jQuery_1_8_2 = $.noConflict(true);
</script>

次に、プラグインの環境を作成するには、次のようにします。

(function(jQuery) {
    var $ = jQuery;
    // now both jQuery and $ refer to version jQuery 1.3.2 inside this closure
    // use your plugin that requires 1.3.2 here
})(jQuery_1_3_2);

これが私のプロジェクトだった場合、すべてのコードで同じバージョンの jQuery を使用する方法を見つけるためにいくらかの労力を費やします。なぜなら、複数のバージョンの jQuery はページの読み込みを遅くし、より多くのメモリを消費し、開発とトラブルシューティングを複雑にするからです。 . それについて良いことは何もありません。

于 2012-10-14T17:56:55.390 に答える