1

したがって、jQuery ドキュメント対応ハンドラーについて知っておく必要があります。

$(function () {
  // stuff here
});

つまり、基本的に、関数の最初のパラメーターが$関数の場合、ドキュメントの起動時にそれを実行しますよね?

では、なぜこれが機能しないのでしょうか。

$(foo());
4

5 に答える 5

9

入力$(foo());すると、実際に呼び出し fooて結果を に渡し$ます。コールバックとして使用する場合はfoo、 と入力する必要があります$(foo)

于 2012-10-03T08:56:02.933 に答える
7

foo() の結果は関数ではないためです。

使用: $(foo);

于 2012-10-03T08:55:51.320 に答える
4

どうぞ。

function foo() {
  return function() {
    console.log("Hello World");
  } 
}

$(foo());

今では動作します。(私がそこで何をしたかわかりますか?)

于 2012-10-03T09:00:42.763 に答える
1

まず、 の最初のパラメーター$は (常に) 関数ではないことを知っておく必要があります。jQuery のソース コードを調べてみると、次の関数が呼び出されていることがわかります。

init: function( selector, context, rootjQuery ) {

以下を(順番に)処理します。

// Handle $(""), $(null), or $(undefined)
// Handle $(DOMElement)
// The body element only exists once, optimize finding it
// Handle HTML strings (tags, id's etc.)
// HANDLE: $(function)
// Shortcut for document ready

あなたの質問は、次のコードを持つ最後の部分に関するものです。

// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
    return rootjQuery.ready( selector );
}

ここで、セレクターが関数かどうかを jQuery がチェックすることがわかります。あなたの場合、そうではありません。実際に関数を渡すのではなく、関数を呼び出しています。foo の結果が関数の場合、それは機能します。

これを次のように変更することもできます。

var foo = function() {
   // do your stuff
};

$(foo);
于 2012-10-03T09:05:22.610 に答える
1

foo は関数という名前であり、匿名ではありません。したがって、 $(foo);のように使用する必要があります。

これをチェックしてください

var functionName = function() {} vs 関数 functionName() {}

于 2012-10-03T09:03:34.857 に答える