将jQuery事件绑定到简单的非DOM Javascript对象可以吗?
var myobject = {}; $(myobject).bind("foobar",function() { alert("daa"); }); $(myobject).trigger("foobar");
有什么影响?
垃圾收集(没有新的引用创建,防止对象GCeded)
>对象属性(分配给对象的新属性)?
>表现
我注意到的一些事情
解决方法
而不是使用jquery事件系统,我将实现一个使用
jQuery.Callbacks方法模拟它.
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");
然而,为了回答你的问题,除了没有记录的事情之外,我看不到任何即时的问题,而且可能会将功能从版本更改为版本(尽管它在所有当前可用的版本1.2.6中都有效).