寫像jQuery的回調在jQuery中您可以使用調這樣的:上點擊
$('#btn').on('click', function() {
// code
});
我怎麼能寫的東西就像即
foo.on('bar', function() {
// code
});
foo.on('buzz', function() {
//code
});
?
謝謝。
寫像jQuery的回調在jQuery中您可以使用調這樣的:上點擊
$('#btn').on('click', function() {
// code
});
我怎麼能寫的東西就像即
foo.on('bar', function() {
// code
});
foo.on('buzz', function() {
//code
});
?
謝謝。
就像是:
var eventBus = function() {
var supportedEvents = ['bar', 'buzz'];
var subscribers = {};
for (var i = 0; i < supportedEvents.length; i++) {
subscribers[supportedEvents[i]] = [];
}
return {
on: function (event, action) {
subscribers[event].push(action);
},
trigger: function (event) {
var funsToCall = subscribers[event] || []; // empty array if unsupported event
for (var i = 0; i < funsToCall.length; i++) {
funsToCall[i](); // calling a function
}
}
}
}
然後調用eventBus
函數來得到一個對象,這將是你的foo
:
var foo = eventBus();
foo.on('bar', function() {
console.log('bar');
});
foo.on('buzz', function() {
console.log('buzz');
});
foo.trigger('bar'); // prints 'bar' to the console
foo.trigger('buzz'); // prints 'buzz' to the console
下面的文章將有助於事件的方法
如何在jQuery中創建自定義事件
jQuery的.trigger方法是關鍵。您可以在任何時候觸發具有新類型名稱和任意數據的事件,例如
$.event.trigger({
type: "newMessage",
message: "Hello World!",
time: new Date()
});
處理程序現在可以訂閱「newMessage」事件,例如,
$(document).on("newMessage", newMessageHandler);
任何意見爲downvotes? –
你沒有回答這個問題。 – siledh
什麼是'foo'? – David
更重要的是什麼'bar'和'buzz' :) –
你應該看[觀察者模式](http://robdodson.me/blog/2012/08/16/javascript-design-patterns-observer /)。 – Andy