3

JavaScript と jQuery は初めてです。ダウンロードしたいくつかの jQuery プラグインを使用しようとして失敗した後、$.fn を調べたところ、ドキュメントの準備が整ったハンドラーが呼び出されるまでに、追加されたものは何もないことがわかりました。onclick などのイベント ハンドラでも失敗します。

<script type="text/javascript" src="~/Scripts/jquery-1.7.1.min.js"></script>
<script>
    jQuery.fn.myPlugin = function () { alert("success"); };

    //works fine - alerts with "success"
    $(document).myPlugin();

    $(function () {
        //Uncaught TypeError: Object [object Object] has no method 'myPlugin'
        $(document).myPlugin();
    });
</script>

プラグインの定義をドキュメント準備ハンドラー内に移動すると、その後はすべて正常に動作します (イベント ハンドラーを含む)。それはそれが行われるべき方法ですか?私がオンラインで見つけたものはすべて、そうではないことを明確に示唆しています。Chrome と組み込みの開発者ツールを使用しています。ありがとう。

4

1 に答える 1

0

はい。それで合っています。すべての DOM 要素と jQuery がいつ使用できるようになるかを知ることができるように、ドキュメント準備完了コールバックがあります。実際のコードはコールバック内にある必要はありませんが、すべての要素を使用する準備が整ったら、プラグインを初期化する必要があります。

たとえば、on('click')ハンドラーはドキュメント準備完了コールバックにある必要がありますが、実行する関数はそうである必要はありません -

$("#button").on('click',function(){
  btnClickHandler(); // this can be defined outside the ready callback.
});

ご覧のとおり、コード自体は準備完了のコールバックでカプセル化する必要はありませんが、プラグインを実行するコードはそこにある必要があります。そうして初めて、ドキュメントを操作する準備ができていることがわかります...

ドキュメント対応のコールバック内にコードを配置することは常に良い考えです。また、異なるファイルに複数のドキュメント対応コールバックを含めることもできます。それぞれは、DOM の準備が整うとすぐに呼び出されます。複数の準備完了コールバックが発生した場合、それらをページに書き込む順序によって、何が最初に実行されるかが決まります。準備ができたコールバックが実行されるように、常に最初に jQuery を参照してください。

于 2012-09-02T06:52:59.397 に答える