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作为参数。我已经分别附加了这两个函数,因为通常以这样的模块化方式附加处理程序是唯一的方法。

您还可以使用事件命名空间,以便您可以独立地分离处理程序:

$(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 回答