jQuery .trigger() 複数のイベント 質問する

jQuery .trigger() 複数のイベント 質問する

私は jQuery プラグインを書いていて、.onそれを.triggerpub/sub システムとして使用しています。ただし、さまざまなシナリオで複数のイベントをトリガーしたいと考えています。

メソッドのように、これを 1 つの文字列として実行することは可能ですか.on?

ゴール:

$this.trigger("success next etc");    // doesn't work

現在の解決策:

$this
    .trigger("success")
    .trigger("next")
    .trigger("etc");                  // works, triggers all three events

助言がありますか?

ベストアンサー1

JQuery自体は複数のイベントのトリガーをサポートしていませんが、カスタム拡張メソッドを記述することはできます。triggerAll

(function($) {
    $.fn.extend({
        triggerAll: function (events, params) {
            var el = this, i, evts = events.split(' ');
            for (i = 0; i < evts.length; i += 1) {
                el.trigger(evts[i], params);
            }
            return el;
        }
    });
})(jQuery);

次のように呼び出します。

$this.triggerAll("success next etc");

おすすめ記事