没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Javascript处理处理DOM元素事件实现代码元素事件实现代码
DOM元素都有一些标准事件,一般使用时只要使用onclick=function的方式就可以了,但是当需要为DOM元素添
加多个事件,删除事件,或在用Javascript封装控件的时候,为封装的控件添加自定义事件的时候
DOM元素都有一些标准事件,一般使用时只要使用onclick=function的方式就可以了,但是当需要为DOM元素添加多个事件,
删除事件,或在用Javascript封装控件的时候,为封装的控件添加自定义事件的时候,onclick=function的方式就不够用了,但
是浏览器有addEventListener和attachEvent方法可供调用,从而模拟出类似于C#中的事件委托的事件触发机制!
复制代码 代码如下:
/*
* 功能:事件处理
* Author:LQB
* 时间:2009-1-4
* #include JCore.js
*/
var JEvents = function(){
this.events={};
this.addEvent = function(o){//添加事件
if(typeof o == 'string'){/*strArg1,strArg2……的方式传递参数*/
for(var i = 0, a = arguments, v; v = a[i]; i++){
v = v.toString().toLowerCase();
var enFX = v.indexOf("on")==0 ? v.substr(2) : v;
if(!this.events[enFX]){
this.events[enFX] = true;
}
}
}else{
JCore.apply(this.events, o,false);
}
};
this.addListener = function(eventName,fn,scope/*,Args……*/){//为事件添加处理方法
if(typeof(eventName)!="string"|| eventName.lenght==0)return;
if(typeof(fn)!="function")return;
eventName = eventName.toString().toLowerCase();
var enFX = eventName.indexOf("on")==0 ? eventName.substr(2) : eventName;
if(!this.events[enFX]){
throw "Error! Event /"" + eName + "/" doesnt exist."
}
var sp = scope||window;
var callArgs = Array.prototype.slice.call(arguments, 3);//从第4个参数开始
callArgs = typeof(callArgs)!="undefined"?callArgs:[];
var delegate = fn.createDelegate(callArgs,sp);//JCore支持
//为fn方法创建标记,在删除事件时使用
if(!fn.uid) {
var time = new Date();
fn.uid= ""+time.getMinutes()+time.getSeconds()+time.getMilliseconds();
}
//标记委托,在删除事件绑定时使用
delegate.uid = getCacheAttName(enFX,fn.uid);
if(typeof(this.events[enFX])!="object")
this.events[enFX]=[];
this.events[enFX].push(delegate);//把方法添加到事件列表中
};
this.removeListener = function(eventName,fn){//移除事件绑定
if(eventName && fn){
eventName = eventName.toString().toLowerCase();
var enFX = eventName.indexOf("on")==0?eventName.substr(2):eventName;
var AttName = getCacheAttName(enFX,fn.uid);
if(typeof(this.events[enFX])=="object"){//存在这个事件
var functions = this.events[enFX];
for(i=0;i<functions.length;i++){//依次查找每个方法
if(functions[i].uid===AttName){//找到,删除
this.events[enFX].remove(functions[i]);
break;
}
}
资源评论
weixin_38722193
- 粉丝: 5
- 资源: 908
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 梯度下降算法稀疏建模MATLAB库103版.zip
- 通过Matlab R2016b创建的CleanRepair eps PostScript矢量文件.zip
- 华为企业网络仿真平台(eNSP):设备仿真、图形化操作及应用场景解析
- 0-ANSWER.html
- 推荐系统用matlab编写的代码.zip
- 通过SRPPHAT等实现麦克风声源定位.zip
- 为那些用MATLAB绘图的人准备的备忘单.zip
- 我的matlab作业文件.zip
- 为学生学习MATLAB Simulink提供了一个很棒的有用资源列表,其中包括技巧、教程、视频、备忘单和学习MATLA.zip
- 无人机的MATLAB轨迹跟踪控制.zip
- 物理信息动态模态分解的MATLAB代码piDMD.zip
- 无线传感器网络中节点定位的MATLAB脚本.zip
- 稀疏表示分类器应用于高光谱图像分类的MATLAB代码实现仿真论文地址如下.zip
- 稀疏表示问题的MATLAB库.zip
- 先进PID控制MATLAB仿真 4th MATLAB PID算法 仿真 学习.zip
- 相关向量机的MATLAB代码使用SB2_Release_200.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功