это мое решение, хотя я уверен, что есть лучший способ сделать это (так Я использовал элемент Dom, который не указан в документе)
//Non Dom Objects
function NonDomJqueryObj(type) {
var T = this;
T.dom = $("<o></o>");
T.Obj = eval("new "+type+"()");
return T;
}
NonDomJqueryObj.prototype.addChild = function(child) {
this.dom.append(child.dom);
}
NonDomJqueryObj.prototype.Dispatch =function(event_name,args) {
if (!args)
$(this.dom).trigger(event_name);
else
$(this.dom).trigger(event_name,args);
}
NonDomJqueryObj.prototype.Listen =function(event_name,callback) {
$(this.dom).on(event_name,callback);
}
//some object costructor
function test() {
var T = this;
return T;
}
var child1 = new NonDomJqueryObj("test");
var child2 = new NonDomJqueryObj("test");
child1.addChild(child2);
var parent1 = new NonDomJqueryObj("test");
parent1.addChild(child1);
parent1.Listen("FIRST_EVENT",function(e,e_p) {
console.log(e_p)
console.log("FIRST_EVENT caught");
$("p").html($("p").html()+"<br>"+e_p+"<br>FIRST_EVENT caught")
})
child1.Dispatch("FIRST_EVENT","from child1");
child2.Dispatch("FIRST_EVENT","from child2");
Не существует специального кода события. – Jai