6

新しい jQuery オブジェクトを作成するさまざまな方法について、少し混乱しています。

関連ドキュメントは次のようです: http://api.jquery.com/ready/ http://api.jquery.com/jQuery/

これらの 2 つのドキュメントから、以下はすべて同等です (「$」のエイリアシングの有無を除いて)。

  • $(document).ready(handler)
  • $().ready(ハンドラ)
  • $(ハンドラ)
  • jQuery(関数($) {});
  • jQuery(document).ready(function($) {});

あれは正しいですか?見逃しましたか?

4

3 に答える 3

4

これらは多少同等です。

  • $(document).ready(handler)- handlerDOM が読み込まれるタイミングを調整します
  • $().ready(handler)- handlerDOM がロードされたときに を実行します (非推奨、使用しないでください)
  • $(handler)- を実行しhandler、DOM をロードします - へのショートカット$(document).ready(handler)
  • jQuery(function($) {})エイリアスjQueryの代わりに使用するだけで、上記の #3 と同じ$
  • jQuery(document).ready(function($) {})- 最初と同じ、エイリアスjQueryの代わりに再び使用$

Prototype など、別のものとして定義されている場合$、最初の 3 つは機能しません。jQuery最後の 2 つは類似しており、渡された最初の引数 (オブジェクト) を受け入れて$内部に作成するだけで、$他の何かがある場合でもこれを行うことができます。

jQuery(function($) {
  $("input").val("something");
});
于 2010-11-09T23:34:12.620 に答える
3

さて、他にもあります。ドキュメントから:

$(document).bind("ready", handler)もあり ます。これは ready メソッドと同様に動作し
ますが、例外が 1 つあります。ready イベントがすでに発生しているときに .bind("ready") を試行すると、バインドされたハンドラーは実行されません。

$(document).ready(function() { //stuff }他の初期化メソッドは常に実行されます...そのため、たとえば、多数のファイルで宣言していて、ハンドラーが常に実行されていることに気付くかもしれません。

私は一緒に行くjQuery(document).ready(function($) {})か、そうで$(document).ready(function() {})ないよりも頻繁に行きます...それらはより読みやすいことがわかりました。

もう 1 つの方法は、body タグの終了直前にスクリプトを呼び出し、その中で次のようにすることです。

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

$ を使用して他のライブラリとの競合を避ける必要がある場合。これは自己実行型の匿名関数であり、他のライブラリとの競合を心配することなく、そのスコープ内でエイリアスを使用できます。

于 2010-11-09T23:43:52.230 に答える
0

jQuery のみを使用している場合、$() は jQuery() と同等です。これで半分がカバーされます。

次に、$(document).ready の代わりに $() を使用すると、それらは同じになります。この場合、これは単なるヘルパー関数です。たとえば、ready を別のものに追加したい場合、次のようにします: $(foo).load({})

最後に、パラメーターを渡す必要があるため、 $().ready の意味がわかりません。

于 2010-11-09T23:34:05.167 に答える