2013-04-24 116 views
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" 
} 

回答

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 
+0

我還以爲你綁定事件偵聽器第二次將覆蓋第一個。但我想那不是那種情況 – Johan 2013-04-24 11:52:02