17

次のjQueryスニペットの最終結果は同じですか?

スニペット1:

$(function() { alert('test!'); });

スニペット2:

$(document).ready(function() { alert('test!'); });

言い換えれば、は$(function(){})単にの省略形$(document).ready(function() { });ですか?

私が尋ねている理由は、jQueryとjQueryUIを使用して構築した小さなアプリケーションでいくつかの奇妙な問題が発生しているためです。場合によっては、ボタンをクリックしてフォーム送信アクションを実行すると、ブラウザウィンドウがフリーズすることがあります。基になるブラウザウィンドウ(ポップアップを起動するウィンドウ)は、そこでいくつかのアクションを実行するまで引き続き使用できます。ユーザーは、ブラウザー(Internet Explorer、明らかに)を強制的に閉じることによってのみ続行できます。これはAcrobatPDFプラグインに関連していると思われますが、同様の動作を示すように見えるこの問題を見つけたため、ここですべての角度を確認しています。

4

7 に答える 7

11

次の 3 つの構文はすべて同等です。

$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)

jQuery 名前空間のエイリアス

別の JavaScript ライブラリを使用する場合、名前空間の問題を回避するために $.noConflict() を呼び出したい場合があります。この関数が呼び出されると、$ ショートカットが使用できなくなり、通常は $ を記述するたびに jQuery を記述する必要があります。ただし、.ready() メソッドに渡されるハンドラーは、グローバル jQuery オブジェクトに渡される引数を取ることができます。これは、他のコードに影響を与えることなく、.ready() ハンドラーのコンテキスト内でオブジェクトの名前を変更できることを意味します。

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});
于 2011-04-22T09:49:26.930 に答える
8

はい、それらは同等です。参照については、このリンクを参照してください .ready()

于 2011-04-22T12:32:06.870 に答える
5

$(function(){})$(document).ready(function() { })同一です。

于 2011-04-22T09:51:43.933 に答える
4

はい、これは同一です。ただし、最初のものは通常、簡単にするために jquery で使用されます。

$(function() { 
    alert('test!'); 
});
于 2011-04-22T09:57:11.733 に答える
3

次のコードも機能します

$(document).ready(function(){
    alert("success");
});

また

$(function(){
    alert("succes");
});
于 2013-07-01T08:02:45.027 に答える
1

はい:

$(document).ready(function() { 
  /* code */
});

…と:

$(function() { 
  /* code */
});

…は事実上同じであり、後者は一般に前者の省略形と呼ばれます。

なぜ同じ結果が得られるのか疑問に思っているなら、それは jQuery コンストラクター( <strong>jQuery()としてエイリアス化された関数)$()とその許可された入力に関係しています。

コンストラクターはapi.jquery.com/jquery/で文書化されており、関連する 2 つのオプションの概要を以下に示します。


jQuery( selector [, context ] )

一連の要素を照合するために使用される CSS セレクターを含む文字列を受け入れます。

jQuery オブジェクトを返します。

上記のオプションは、書き込み時に jQuery コンストラクターを呼び出す方法です。

$(document).ready(function() { /* code */ });

documentオブジェクトが選択され、jQuery オブジェクトの構築に使用されます。DOM が完全に読み込まれると、その jQuery オブジェクトは 内のコールバック (無名関数) を呼び出しますready()


jQuery( callback )

DOM の読み込みが完了したときに実行される関数をバインドします。

jQuery オブジェクトを返します。

上記のオプションは、書き込み時に jQuery コンストラクターを呼び出す方法です。

$(function() { /* code */ });

コールバック関数 (無名関数) を使用して jQuery オブジェクトを作成し、DOM が完全に読み込まれると呼び出されます。

于 2014-10-22T20:33:12.433 に答える