0

やあみんな、ヘッダーファイルに次の行が含まれている非常に興味深いWebサイトテンプレートを見つけました。

(function($){
 $(function(){

…normal jquery

 }); // end of document ready
})(jQuery); // end of jQuery name space 

どういう意味ですか?domready を使用したい場合は、次のように書く必要があると思いました。

$(document).ready(function(){

違いはどこですか?それを変更できますか?ご協力ありがとうございました

4

2 に答える 2

4

$(function() {は の単なるショートカット$(document).ready(function() {あり、同等です。(function($){....の})(jQuery);部分は互換性のためだけのものなので、それ$jQueryスコープ内のオブジェクトです (たとえそれが外側にあるとしても)。

ここで注意すべき点:document.readyハンドラーjQueryは最初の引数として receive を受け取るため、サイトのコードは次のようにより簡潔に表現できます。

jQuery(function($){
  …normal jquery
}); // end of document ready

だからあなたの質問に答えてください:あなたはそれを変更する必要がありますか?$(function() { });いいえ、好きな形式を使用してください...入力する必要が少なく、1日に100回入力するので、私はそれを好みます。より明確な場合は$(document).ready(function() { });、それをそのまま使用しますが、動作は同じです... したがって、あなたとチームにとってより明確な方を使用してください。

于 2010-11-07T11:48:15.897 に答える
1

あなたが引用したコードのDOM対応部分:

$(function() {
  // Document is ready let's write some jQuery!
});

以下と完全に同等です。

$(document).ready(function () {
   // Document is ready let's write some jQuery!  
});

DOM 対応のものをラップする部分は、完全に別の目的のために存在します。

(function($) {
  ...
})(jQuery); // end of jQuery namespace

上記は実際には関数呼び出しです。匿名関数を呼び出して、jQueryオブジェクトを引数として渡し、それが parameter に割り当てられます$。これにより、内部のすべてのコード ( がある場所) が、 を参照していることを認識して...使用できるようになります。$jQuery

これは、他の JavaScript コードが変数をグローバル名前空間内$以外のものに割り当てた可能性があるため、人々が使用するフェイルセーフです。jQuery コードを に代入するjQuery関数 (JavaScript では関数のみがスコープを持つことを思い出してください) でラップすることにより、安全になります。jQuery$

于 2010-11-07T12:01:41.600 に答える