在多个功能中监听事件

时间:2013-04-24 11:47:07

标签: javascript jquery

我收听了一个自定义事件:

$(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"
}

1 个答案:

答案 0 :(得分: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