2011-05-27 25 views
2

我想在javascript中創建新的事件類型。假設我有一些標準,當用戶hasAquiredIceCream,我想觸發和綁定到這個事件的基礎上的標準。我怎樣才能在JavaScript中創建新事件。我使用jQuery,所以理想情況下我可以使用它與.trigger('hasAquiredIceCream').bind('hasAquiredIceCream')。我假設一個純粹的JavaScript解決方案將與jQuery一起工作(它不需要是一個插件),可以這樣做嗎?javascript中的新事件類型

+1

見類似的問題http://stackoverflow.com/questions/399867/custom-events-in-jquery和HTTP ://api.jquery.com/trigger/。 '.trigger()'和'.bind()'支持自定義事件。 – 2011-05-27 14:11:50

+0

它已經像你描述的那樣工作了... – 2011-05-27 14:27:19

+0

@felix啊,我不知道在使用它之前我不需要先定義它 – 23890123890 2011-05-27 14:55:54

回答

3

在JavaScript對象上使用jQuery的.trigger()you can trigger custom events on any element

var obj = { id: 0, ... }; 

$(obj).bind('custom', function(e, arg, ...) { ... }); 
$(obj).trigger('custom', [arg, ...]); 

或者,使用普通的JavaScript,實現observer pattern

function EventHelper() { 
    this.handlers = []; 

    this.bind = function(fn) { 
     this.handlers.push(fn); 
    }; 

    this.trigger = function(args) { 
     for (var i = 0; i < this.handlers.length; i++) { 
      this.handlers[i].call(this, args); 
     } 
    }; 

    return this; 
} 

var event = new EventHelper(); 
event.bind(function() { ... }); 
event.trigger(); 
+0

真棒,謝謝 – 23890123890 2011-05-27 14:42:01