7

jQuery の Events メソッドをいじって、次のコードで単純なイベント バスを作成しました。

$(window).on('test:event', function (event, data) {
    console.log('Saw a test event: event=%o, data=%o', event, data);
});

$(window).trigger('test:event', {test_data: 'foo'});

私の質問は、「ウィンドウ」を使用してイベントを管理することに問題はありますか?

4

1 に答える 1

11

はい、これは DOM バブリングのコンテキスト外でカスタム jQuery イベントの機能を使用する優れた方法です。ただし、ウィンドウの代わりに空のオブジェクトを使用することで、より効率的に行うこともできます (DOM にクエリを実行する必要はありません。これはパフォーマンスが高く、私が想定している要件とは無関係であるためです)。{}

Ben Almanは、この方法でイベントを管理するための優れたjQuery プラグインを作成しました。これは、無関係な jQuery イベント要素のいくつかを避けながら、同じ原則を使用して軽量のパブリッシュ/サブスクライブ パターンを実現します(文字列で定義されたイベントをリッスンしてトリガーし、任意の追加の任意のデータを使用します)。間を通過)。

于 2013-02-21T17:25:19.140 に答える