0

私が聞いているカスタムイベントがあります:

$(document).on('MyCustomEvent', function(e, data) {

});

MyCustomEvent私の問題は、さまざまな関数の中でいつ発火したかを知りたいということです。イベント ハンドラーを各関数内にアタッチしたくありません。これは意味がなく、おそらく相互にオーバーライドするからです。

私が求めているのは次のようなものです:

function one(){

    //"when MyCustomEvent is fired, do stuff with the 'data' here"
}

function two(){

    //"when MyCustomEvent is fired, do stuff with the 'data' here"
}
4

1 に答える 1

1

これらすべての関数をイベント ハンドラーとしてアタッチすることの問題点は何ですか?

$(document).on('MyCustomEvent', function(e, data) {
    one(data);
});

$(document).on('MyCustomEvent', function(e, data) {
    two(data);
});

もちろん、関数が引数として受け入れるように署名を変更する必要がありdataます。通常、このようにモジュール方式でハンドラーをアタッチすることが唯一の方法であるため、2 つの関数を別々にアタッチしました。

イベント名前空間を使用して、ハンドラーを互いに独立して切り離すこともできます。

$(document).on('MyCustomEvent.one', function(e, data) {
    one(data);
});

$(document).on('MyCustomEvent.two', function(e, data) {
    two(data);
});

$(document).trigger('MyCustomEvent'); // both functions are called
$(document).off('MyCustomEvent.one');
$(document).trigger('MyCustomEvent'); // only two() is called
于 2013-04-24T11:48:49.923 に答える