【发布时间】:2012-06-11 10:22:37
【问题描述】:
我想要的是一个提供一些事件的自定义对象。 例如:
var CustomObjectTextChangedEventName = 'textChanged';
var CustomObject = function () {
var _this = this;
var _text = "";
_this.OnTextChanged = document.createEvent("Event");
_this.OnTextChanged.initEvent(CustomObjectTextChangedEventName, true, false);
_this.ChangeText = function (newText) {
_text = newText;
fireTextChanged();
};
function fireTextChanged() {
_this.dispatchEvent(_this.OnTextChanged);
}
}
使用该事件的代码如下所示:
myCustomObject = new CustomObject();
myCustomObject.addEventListener(CustomObjectTextChangedEventName, handleTextChanged, false);
如您所见...在JS中使用事件的默认方式,但我无法使其工作...
目前我的问题是我的对象没有实现addEventListener和dispatchEvent,但是这个函数通常是从“元素”实现的...
我可以以某种方式使它们可用,还是我必须自己实现它们? 我必须如何实现它们?
我必须实现自己的事件处理吗? (有一个处理程序的内部列表,一个“添加”和“删除”处理程序函数,并在我想触发事件时触发每个处理程序)?
【问题讨论】:
-
我不知道这是否有帮助,但 Backbone.js 内置了事件。使用它创建的每个模型都可以使用语法
object.trigger(event_name)触发自定义事件 -
使用 jQuery 也很容易......这就是为什么我认为它不会那么难:P $(_this).trigger(CustomObjectTextChangedEventName, _text); $(myCustomObject).bind(CustomObjectTextChangedEventName, handleTextChanged);
标签: javascript dom-events