次の間に違いがあるかどうかを理解しようとしています:
(function($){
...
})(jQuery);
対。
(function($){
...
})($);
jQuery が $ に置き換えられていることに注意してください。これでよろしいですか?使えないからどこも使わないの?動作しますが、おそらく非標準ですか?それがエラーなのか、それとも大丈夫なのか、誰かがこれを説明してもらえますか? ありがとう
他の JavaScript フレームワークでも $ をショートカットとして使用する場合があります。$ が関数内で jQuery であることを保証するには、最後に $ ではなく jQuery を渡します。このタイプの関数または「コード領域」の定義は、フレームワークを混在させるときに $ が本当に jQuery であることを確認するためのものです。
多くの 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
$
の単なるショートカットです。これは 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
})($)
2番目の例は冗長です。を使用して jQuery を渡すことができる場合$
は$
、すでに jQuery です。つまり、次のように記述できます。
(function(){
$('#selectme');
})();
最初の例は、noConflict モードで jQuery を使用したいが$
、選択したコードで jQuery を参照するために を使用する場合にのみ価値があります。それ以外の場合は、技術的にはクロージャーさえ必要ありません (ただし、クロージャーは他の多くの理由で優れた方法です)。