2012-04-14 175 views
1

在我的应用程序中,我有几个不同的小部件。当一个人做出改变时,其他人也需要改变。我想让他们分开。我没有做太多的JavaScript编程,所以我不确定这样做的典型方式。Javascript注册事件监听器

jquery中是否有任何排队机制,所以我可以发布一个事件说“prop X改变了值Y”,并且任何注册到该队列的人都可以得到通知?或者,这不是一种处理javascript事件的典型方式?

回答

3

在jquery中,它很直接,你可以使用与标准事件相同的机制。

//register listener for "widget" 
$("div#firstWidget").bind("myCustomEvent", function(e){ 
    alert(e.customFlag); 
}); 

//somewhere else trigger event on widget 
var e = $.Event("myCustomEvent"); 
e.customFlag = "customValue"; 
$("div#firstWidget").trigger(e); 

你也可以提供一个全球性的事件总线创建emtpy jQuery对象去把握和调度事件

window.myEventBus = $([]); 

//register listener 
myEventBus.bind("customEvent", function(e){ 
    //handle event 
}); 

//fire event 
myEventBus.trigger($.Event("customEvent", { numProp:5, boolProp:true }));