2

jQueryのオンラインドキュメントによると、名前の競合を避けたい場合は、次のようにスクリプトを記述できます。

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

次のアプローチの方がはるかに理解しやすいと思いますが、

(function($){ //function to create private scope with $ parameter
    //private scope and using $ without worry of conflict
})(jQuery); //invoke nameless function and pass it the jQuery object

最初のアプローチは私が消費するのが難しいようです。ここでの私の推測は(最初のアプローチで)後で匿名関数がバックグラウンドで呼び出され、jQueryをパラメーターとして使用することです。

しかし、私の考えが正しいかどうかはわかりません。誰かがそれを手伝ってくれませんか?ありがとうございました。

4

1 に答える 1

4

前者は後者とは異なります。あなたはそれらを同一視しようとすべきではありません:

  • 例2(function($) ...)はプレーンなJavaScript構造です。jQueryこれは、引数および$パラメーター(jQuery渡された引数に解決される)としてすぐに呼び出される無名関数です。

  • 例1はjQuery具体的です。 の内部動作には、関数jQueryに渡される最初の引数がそれ自体であるように設定されており、任意の名前を付けることができます(この場合は)。独自の機能もあることに注意してください!例2とは動作が異なる可能性がありますdocument.readyjQuery$jQuery(document).ready

</body>すべてのJavaScriptをHTMLの直前に配置することをお勧めします。その場合、上記の2つの例はほぼ同じように機能するはずです。

@elclanrsが示すように、を使用することもできますjQuery.noConflict()。戻り値は新しいjQuery変数として機能します。を使用するのが好きな人もいます$$

于 2012-11-14T04:45:32.243 に答える