9

次の間に違いがあるかどうかを理解しようとしています:

(function($){

...

})(jQuery);

対。

(function($){

...

})($);

jQuery が $ に置き換えられていることに注意してください。これでよろしいですか?使えないからどこも使わないの?動作しますが、おそらく非標準ですか?それがエラーなのか、それとも大丈夫なのか、誰かがこれを説明してもらえますか? ありがとう

4

4 に答える 4

15

他の JavaScript フレームワークでも $ をショートカットとして使用する場合があります。$ が関数内で jQuery であることを保証するには、最後に $ ではなく jQuery を渡します。このタイプの関数または「コード領域」の定義は、フレームワークを混在させるときに $ が本当に jQuery であることを確認するためのものです。

于 2012-07-09T21:16:09.223 に答える
6

多くの JavaScript ライブラリは、jQuery と同様に $ を関数または変数名として使用します。jQuery の場合、$ は単なる jQuery のエイリアスであるため、すべての機能は $ を使用しなくても利用できます。jQuery と一緒に別の JavaScript ライブラリを使用する必要がある場合は、$.noConflict() を呼び出して、$ の制御を他のライブラリに戻すことができます。

http://api.jquery.com/jQuery.noConflict/

「非競合」モードでは、$ ショートカットは使用できず、jQuery がより長く使用されます。例えば:

$(document).ready(function(){
     $(#somefunction) ...
});

なる:

jQuery(document).ready(function(){
    jQuery(#somefunction) ...
});

$ のデフォルトの jQuery ショートカットを使用するには、コードの周りに次のラッパーを使用できます。

jQuery(document).ready(function($) {
    // $() will work as an alias for jQuery() inside of this function
});

そのラッパーにより、ページの読み込みが完了するとコードが実行され、$ は jQuery の呼び出しに機能します。なんらかの理由で (DOM Ready イベントを待たずに) コードをすぐに実行したい場合は、代わりに次のラッパー メソッドを使用できます。

(function($) {
    // $() will work as an alias for jQuery() inside of this function
})(jQuery);

よく読んでください: http://codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_wrappers

さらにあなたが熱心なら:

$はjQueryで何を意味しますか?

これは喉の渇きを癒すのに役立つはず:)です。これが役立つことを願っています!

于 2012-07-09T21:21:02.917 に答える
1

がある。jQuery
$の単なるショートカットです。これは lib を定義しないため、他のフレームワークでも使用される可能性があります。
このケースを考慮してください:

// remove the jQuery shortcut ($ === undefined)
var j = jQuery.noConflict();
// redefine the dollar sign
window.$ = function(){
    // some other plugin
}

// case A
(function($){
   alert(jQuery === $);//true
})(jQuery)

 // case B
(function($){
   alert(jQuery === $);//false
})($)
于 2012-07-09T21:18:40.610 に答える
1

2番目の例は冗長です。を使用して jQuery を渡すことができる場合$$、すでに jQuery です。つまり、次のように記述できます。

(function(){
   $('#selectme');
})();

最初の例は、noConflict モードで jQuery を使用したいが$、選択したコードで jQuery を参照するために を使用する場合にのみ価値があります。それ以外の場合は、技術的にはクロージャーさえ必要ありません (ただし、クロージャーは他の多くの理由で優れた方法です)。

于 2012-07-09T21:19:59.437 に答える