是否可以将 jQuery 事件绑定到普通的非 DOM Javascript 对象:
var myobject = {};
$(myobject).bind("foobar", function() { alert("daa"); });
$(myobject).trigger("foobar");
有何影响
垃圾收集(没有创建新的引用来防止对象被GC)
对象属性(分配给对象的新属性)?
表现
我注意到的一些事情
- 事件名称不得与对象上的函数名称冲突,例如您不能拥有名为 init 的函数 init 和事件并正确触发它
我不使用 jquery 事件系统,而是使用以下方法来实现一个模仿它的系统:jQuery.Callbacks http://api.jquery.com/jquery.callbacks/ method.
var myClass = function(){
this._callbacks = {};
};
myClass.prototype = {
addEvent: function(evname,callback) {
if (!this._callbacks[evname]) {
this._callbacks[evname] = $.Callbacks();
}
this._callbacks[evname].add(callback);
},
removeEvent: function(evname) {
if (!this._callbacks[evname]) {
return;
}
this._callbacks[evname].remove();
//Might need this too:
//this._callbacks[evname] = null;
},
triggerEvent: function(evname) {
if (this._callbacks[evname]) {
this._callbacks[evname].fire();
}
}
};
var foo = new myClass();
foo.addEvent("foo",function(){
console.log('foo');
});
foo.triggerEvent("foo");
foo.removeEvent("foo");
// event was removed, the below line won't do anything.
foo.triggerEvent("foo");
http://jsfiddle.net/kEuAP/ http://jsfiddle.net/kEuAP/
但是,为了回答您的问题,我没有看到您正在做的事情有任何直接问题,除了没有记录之外,并且可能会更改版本之间的功能(尽管它适用于所有当前可用的版本 1.2.6+)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)