当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 给自定义对象加上自定义事件的支持的教程

Javascript
jQuery生成asp.net服务器控件的代码
javascript 实现的完全兼容鼠标滚轴缩放图片的代码
JavaScript学习笔记(十七)js 优化
使用SyntaxHighlighter实现HTML高亮显示代码的方法
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
利用jQuery 实现GridView异步排序、分页的代码
jquery.lazyload 实现图片延迟加载jquery插件
Lazy Load 延迟加载图片的 jQuery 插件
jquery 插件实现图片延迟加载效果代码
javascript小数计算出现近似值的解决办法
jquery1.4后 jqDrag 拖动 不可用
jquery 应用代码 方便的排序功能
选择TreeView控件的树状数据节点的JS方法(jquery)
jquery 图片Silhouette Fadeins渐显效果
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
javascript 同时在IE和FireFox获取KeyCode的代码
js 键盘记录实现(兼容FireFox和IE)
javascript 函数速查表
jQuery AnythingSlider滑动效果插件
经典海量jQuery插件 大家可以收藏一下

Javascript 中的 给自定义对象加上自定义事件的支持的教程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 121 ::
收藏到网摘: n/a

自从我写了几个还可以拿出手的东东之后,自我感觉牛B了许多,还有不少同志围着我,称我为高手,虚容心大大的得到了满足。这些是后话,暂且不表。。。 我一般是不看别人写的代码的,为啥?累!而且这位同志给的还是经过压缩的!汗。。。考我是不是?还有,这位同志也不给个示例的代码,只说是代码没有问题。我努力的试着去“破解”,但是脑细胞死的太快了!在我没有变成白痴之前,我毅然决定,不在往下看下去。不就是给自定的对象加入自定事件的支持吗?我写个示例吧,就算是教程了,如果看不懂,我也没有办法了!我不会傻到给你写好代码,让你拿去卖钱的!
好了,下面是我写的代码,注意看了:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

示例中,自定义了一个: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){
var oldSkin = oOutline.className;
oOutline.className = pSkin;
if(typeof this.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){
var obj = p ? $.$(p) : this;
obj.style[pKey] = pValue;
obj.$css = $.$css;
return obj;
}
这一段,写成Object.prototype.$css = function(...)是绝对不成功的,至于为什么,就不是这里的讨论范围。

没话可说了,就留空白吧,看不懂的同志,在补补你们的javascript知识。
说点题外话:不要老是整jQuery,prototype,json等。