4

バージョン1:

function add(){
var a = 2;
...
...
...
}

バージョン2:

$(function(){
var ...
..
..
});

2つのバージョンの主な違いはどこにありますか?バージョン2の場合、関数名はありません。関数内のコードを実行するだけの場合は、を削除してみませんか$function(){..};。最近では、多くのスクリプトがバージョン2のスタイルで記述されているため、非常に混乱します。混乱を明確にするためにご協力ください。

4

6 に答える 6

9

例1は、と呼ばれる関数を定義していますがadd、例2は単に無名関数をjQuery関数に渡すことです。

$(function() {...});構文はの省略形であり$(document).ready(function() {...});、引数として関数を取り、DOMの準備ができたときにその関数を実行します。これは、コードを実行する前に、Javascriptで操作する要素が実際に存在することを確認するために使用されます。

以下のコメントに対処するために編集します。

.click()jQuery関数には2つの用途があります。関数を渡すと、追加のクリックイベントハンドラーが作成され、イベントがトリガーされたときにその関数が実行されます。関数を渡さないと、jQueryオブジェクトの要素にアタッチされているすべてのクリックイベントハンドラーがトリガーされます。したがって、はい、.click()関数なしで呼び出すことはできますが、同じことはしません。

次のことはできません。

$(document).ready(var foo = 2;...);

構文エラーが発生するためです。ただし、通常の方法で関数を定義し、それを次の呼び出しに渡すこと$(document).ready()ができます。

function foo() {
     var foo = 2;
     ...
}

$(document).ready(foo);
于 2012-05-23T15:03:57.660 に答える
3

例1と2は完全に異なります。jQueryはjavascriptであるため、関数の定義は同じです。

$(function(){...$(document).ready(function(){...例1が実際に。と呼ばれる新しい関数を生成している間、これは単なる省略形ですadd

ready次のような関数内にadd関数を作成できます。

 $(function(){

       function add(){
            var foo = 1;               
       }

 });

jQueryは、javascriptとは異なる定義と構文を持つ別個の新しい言語ではなく、javascriptの構文と定義を使用してjavascriptで記述されたツールキットです。

jQuery自体を単なる大きな関数、$として定義された関数と考えてください...したがって、function add(){}jqueryの代わりに$と呼ばれる関数function $(){}です。また、通常のjavascript関数と同じ構文でjQuery引数を渡します。

      function add(arg){
          //do something with arg
      }
      add('#elem');

      function $(arg){
          //do something with arg
      }
      $('#elem');

分かりますか?jQueryは非常に複雑な関数であり、さまざまな種類の引数を渡すことができ、多くの便利なツールを返します。しかし、構文はであり、定義は従来のjavascriptと同じです。

      function add(arg){
           var added = arg + 12;
           return this.alertAdded = function(){
                alert(added);
           }
      }

      add(30).alertAdded(); // will alert 42
      //vs
      $('#elem').fadeOut(); // same syntax but referring to very different functionality.

これは、jQueryish構文の例です。通常のプレーンな古いJSです。

于 2012-05-23T15:09:01.477 に答える
2
function add(){
var a = 2;
...
...
...
}

単純なjs関数です。

$(function(){
var ...
..
..
});

jQuery Document.readyのショートカットです:

$(document).ready () {};

あなたはまた、について尋ねたいと思うかもしれません:

(function($){
var ...
..
..
})(jQuery);

これにより、$記号が閉じられます。つまり、ドルを使用できます。(他のライブラリがロードされている可能性がある場所)。

于 2012-05-23T15:06:37.100 に答える
1

$(function(){})実際には関数を内部にラップしています$(document).ready(); このように、DOMがロードされるまでコードは実行されません。

于 2012-05-23T15:04:00.133 に答える
1

$(function()これはjQueryでのドキュメントロードの省略形だと思います。

「jQuery関数」を作成する場合は、次のようにする必要があります。

jQuery.fn.yourfunctionname = function() {
     //code in here
}

つまり、最初の関数は実際に呼び出される関数を定義しadd、次の関数はこれの省略形です。

$(document).ready(function(){

于 2012-05-23T15:06:14.633 に答える
1

最初のバージョンはウィンドウの名前空間に関数を追加しますが、2番目のバージョンのスコープはのスコープ内にある$(function(){...ため、括弧の外のコードからはアクセスできません。

于 2012-05-23T15:07:40.540 に答える