1

あなたはこの方法を知っています

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

「ドキュメント準備完了」イベントがすでに発生しているかどうかに関係なく発生しますか? そのようなイベントを定義したいと思います。

そのイベントは、jQuery では特殊なケースです。標準のイベントメカニズムのみを使用して、カスタムイベントが同じように動作できるかどうか疑問に思っています。

理想的には、「通常の」方法でハンドラーを定義できるようにしたいと考えています。

$(document).on("init.mything", function() { ... });

これは、上記の実行init.mythingがトリガーされる前に実行される場合に機能するようになりました。しかし、そうでない場合、ハンドラーは決して実行されません。

これが難しいのは、jQuery がロードされていること以外は何も想定したくないということです。

何か案は?

4

1 に答える 1

0

すべての jQuery プラグインのコーディングが正しいかどうかはわかりませんが、次の基本構造で十分だと思います。

;(function ($) {
     $.fn.initMyThing(fn) {
         if (this.data('mything_init')) {
             fn.apply(this);
         } else {
             this.on("init.mything", function() {
                 $(this).data('mything_init', true);
                 fn.apply(this);
         }
     }
 })(jQuery);

これは、構文を使用する必要があることを意味します

$(selector).initMyThing(function() ...);

.on()ハンドラーを確立するのではなく。document.ready がこのように機能する唯一の理由は、jQuery がそれを特別に扱うためです。

于 2013-07-02T05:02:11.283 に答える