好了,下面是我写的代码,注意看了:
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
示例中,自定义了一个:JCEvent,c1,c2,c3都是这它的实例。
每个实例都有一个oOutline,我一般用它来做为对象的容器。pParent是用来指示自定义对象在哪里显示的,也就相当于占位符吧,如果不指定,就是document.body。
示例中,我定义了三个自定事件:onCreate,onChangeSkin,onClick
onCreate在create方法里触发。
onChangeSkin在setSkin方法里触发。
onClick在oOutline.onclick里触发。
调用顺序:
由于onCreate是在create方法里调用的,所以c1.onCreate要在c1.create()之前声明。
事件的参数,见:
this.setSkin=function(pSkin){
varoldSkin=oOutline.className;
oOutline.className=pSkin;
if(typeofthis.onChangeSkin=="function")
this.onChangeSkin(oldSkin,pSkin);
}
this.onChangeSkin(oldSkin,pSkin);
这样,你就可以在每个实例里运用oldSkin和newSkin了。
如:
c1.onChangeSkin=function(pOld,pNew){
alert("onChangeSkin事件n设置c1的皮肤:n新皮肤:"+pNew+"n旧皮肤:"+pOld);
}
另外,示例中:
$.$css=function(pKey,pValue,p){
varobj=p?$.$(p):this;
obj.style[pKey]=pValue;
obj.$css=$.$css;
returnobj;
}
这一段,写成Object.prototype.$css=function(...)是绝对不成功的,至于为什么,就不是这里的讨论范围。
没话可说了,就留空白吧,看不懂的同志,在补补你们的javascript知识。
说点题外话:不要老是整jQuery,prototype,json等。