3

ねえ、私は JS と jQuery の練習用に別の基本的なスクリプトを書いていました。これが実際に構成されていることに気付いたとき、古き良きドキュメント対応イベントを作成していました。いいえ:

jQuery の準備が整ったドキュメントは次のとおりです。

$(document).ready(function(){});

さて、ドル記号は jQuery ライブラリを呼び出す jQuery の省略形なので、jQuery ステートメントと呼び出しを作成できますね。

(ドキュメント) は、DOM の「最上位」部分 (ウィンドウ以外) を参照するセレクターです。

.ready は、DOM が完全にロードされたときに発生するアクションです。さて、「DOM」が完全に読み込まれましたが、この場合の DOM は選択されているものを参照していますか? ドキュメントの代わりにボディが選択された場合、ロードされる前にスクリプトが実行されますか?

(function(){});

この部分は私を少し混乱させます。

ドキュメントが読み込まれると、スクリプトが実行されることはわかっています。言い換えれば、それは私たちの機能を正しく実行しますか? スクリプト全体が関数として考えられていますか? そして、これは実際には 1 つの大きな JavaScript ステートメントにすぎませんよね? セミコロンで終わるからです。また、スクリプトが通常、関数の括弧ではなく、中括弧の間にあるのはなぜですか? 違いはなんですか?

どうもありがとうございました。n00by の質問で申し訳ありません。xD

4

7 に答える 7

15

うわー、それは1つの答えに対して多くの質問です:)

さて、ドル記号は jQuery ライブラリを呼び出す jQuery の省略形なので、jQuery ステートメントと呼び出しを作成できますね。

はい、同じオブジェクト$を参照します。jQueryjQueryのソースから取得:

// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;

windowグローバルオブジェクトです。window.$追加されたものはすべてグローバルに利用できるようになるため、たとえば として、または単に呼び出すことができ$ます。

(ドキュメント) は、DOM の「最上位」部分 (ウィンドウ以外) を参照するセレクターです。

documentセレクターではなく、 DOMの最上位ノードを参照するDOM オブジェクトです。などの他のプロパティがあります。document.domainその子の 1 つは<html>要素です。

.ready は、DOM が完全にロードされたときに発生するアクションです。さて、「DOM」が完全に読み込まれましたが、この場合の DOM は選択されているものを参照していますか?

はい、DOM は通常 jQuery セレクターで選択する項目を指します。より具体的には、ページのメモリ内表現です。readyDOM がいつ読み込まれたかを判断するために、さまざまなブラウザーの一連のイベントを使用します。

ドキュメントの代わりにボディが選択された場合、ロードされる前にスクリプトが実行されますか?

現在、jQuery のソース コードは、呼び出し時にどのセレクターが渡されたかを気にしませんready。準備完了関数は次のとおりです。

ready: function( fn ) {
    // Attach the listeners
    jQuery.bindReady(); 

    // If the DOM is already ready
    if ( jQuery.isReady ) {
        // Execute the function immediately
        fn.call( document, jQuery );

    // Otherwise, remember the function for later
    } else if ( readyList ) {
        // Add the function to the wait list
        readyList.push( fn );
    }

    return this;
},

どのセレクターが渡されるかは気にしないので、それを渡すこともbody、何も渡さないことも、必要なものを渡すこともできます。

$({
    an: 'object', 
    that: 'has', 
    nothing: 'to', 
    'do': 'with', 
    ready: 'event'
}).ready(function() { .. });

そしてそれはまだ動作します。

(function(){});

この部分は私を少し混乱させます。

ドキュメントが読み込まれると、スクリプトが実行されることはわかっています。言い換えれば、それは私たちの機能を正しく実行しますか?

はい、DOM の準備が整うと、ready イベントにバインドしたこの関数と各関数が実行されます。

スクリプト全体が関数として考えられていますか?

いいえ、スクリプト全体ではありません。DOM に依存するアイテムのみ。見つかったときに処理する必要があるものもあります。jQuery ライブラリ自体について考えてみましょう。処理される前に DOM Ready イベントを待機しません。JavaScript ステートメントを記述すると、 に渡すようなコールバック関数でない限り、見つかった順序で処理されますready(..)。したがって、以下のコードはすぐに実行され、DOM がロードされているかどうかに関係なく、"hello" というアラートが表示されます。

<script>
    function hello() { alert("hello"); }
    hello();
</script>

そして、これは実際には 1 つの大きな JavaScript ステートメントにすぎませんよね?

あまり。JavaScript を好きなだけモジュール化できます。たとえば、クラス、オブジェクト、再利用可能なウィジェット、MVC などのアーキテクチャ パターンに似たものを多数持つことができます。

セミコロンで終わるからです。

何かが実行されるとき、セミコロンは何の関係もありません。とても上手に書くことができました。

<script>
    alert("Hello"), alert("World")
</script>

これは機能し、2 つの単語を順番に警告し、セミコロンはありません。

また、スクリプトが通常、関数の括弧ではなく、中括弧の間にあるのはなぜですか? 違いはなんですか?

これは、JavaScript や他のいくつかの言語で関数を定義する方法です。理解を深めるために、基本的なスキルを磨いてください。問題を混乱させるだけなので、スクリプトとして参照しないでください。これは、内部にいくつかのステートメントを含む単なる関数です。

于 2010-07-29T16:01:50.670 に答える
4

この.ready()関数は、ドキュメントが選択されたときにのみ起動します。電話できるなんて信じられない$(body).ready()

基本的に、ready() 関数は 1 つの引数 (関数) を取ります。簡単に呼び出すことができます

$(document).ready(alert)

しかし、私たちが通常行っているのは、無名関数を次のように定義することですfunction(){}

$(document).ready(function(){})典型的な内部のすべてのコードが 1 つの大きな関数にすぎないという点で、あなたは正しいです。

私たちのスクリプトは中かっこの間にあります。これは、関数を定義する方法だからです。

これを行うのではなく:

function myFunc()
{
  alert('We are in my function');
}
$(document).ready(myFunc)

中間者を切り取り、これを行います。

$(document).ready(function()
{
  alert('We are in my function');
});
于 2010-07-29T15:41:42.793 に答える
1
  1. (document)セレクターではありません。「ドキュメント」オブジェクトへの参照です。
  2. .readyjQuery オブジェクトで使用できる関数への参照です。の略です.bind("ready", f)
  3. (function() { ... })イベントのハンドラーです。

関数を "ready" ハンドラーとしてバインドすることは、概念的には "click" ハンドラーをバインドすることと同じです。

于 2010-07-29T15:38:30.377 に答える
1

ドル記号は、jQuery ライブラリを呼び出す jQuery の省略形であるため、jQuery ステートメントと呼び出し、正しいステートメントと呼び出し、正しいですか?

はい

.ready は、DOM が完全にロードされたときに発生するアクションです。さて、「DOM」が完全に読み込まれましたが、この場合の DOM は選択されているものを参照していますか? ドキュメントの代わりに本文が選択された場合、ロードされる前にスクリプトが実行されますか?ロードされる前に実行されますか?

いいえ。ready イベントを発生できるのはドキュメントだけです。

これは、dom の準備ができたときに実行される関数です。

$(document).ready(function(){alert('ready')})

あなたも書くことができます:

$(document).ready(mxFunction)
function mxFunction(){alert('ready')}
于 2010-07-29T15:38:45.757 に答える
1

@eskimoblood の「ready イベントを発生できるのはドキュメントだけ」には同意できません。これは真実ではありません。ドキュメントの準備完了イベントはありません。'ready' は、jQuery やその他のライブラリによって導入され、DOM の準備が整っていることを示します。必ずしも読み込まれる必要はありません。

window.loaded は、すべての画像フレームとその他のアセットが読み込まれると起動されるため、「ready」は「loaded」の前に起動します。「DOMContentLoaded」を見てください。「ready」タイプのイベントがどのように実装されているかについての詳細が表示されます。

于 2010-07-29T15:48:49.893 に答える
0

私は JavaScript と jQuery についてはあまり詳しくありませんが、ステートメントが入り{}、パラメーターが入り()ます。では()、何が関数に渡され、{}どの関数が何をするのか

于 2010-07-29T15:37:47.710 に答える
0

jQuery では、任意の jQuery イベントに関数を追加して、イベントが発生したときに実行することができます。

この場合、when the (document) is ready(), run the function(){} within it.

場合によっては、関数にパラメーターを追加できます。たとえばjQuery.ajax、成功設定でパラメーターを使用して、ajax リクエストから返されたデータにアクセスし、関数自体でそのパラメーターを再利用できます。

$.ajax({
  url: "test.html",
  cache: false,
  success: function(html){
    $("#results").append(html);
  }
});
于 2010-07-29T15:38:03.913 に答える