-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathEventUtil.js
107 lines (107 loc) · 3.28 KB
/
EventUtil.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
//javascript通用事件封装
var myEventUtil = {
//版本
version: '1.0',
//日期
datetime: '2015-8-25',
author: 'jack Wang',
//这里均用冒泡事件模型
//添加事件函数,调用方法addEvent(btn1,'click',showmsg);
addEvent: function(ele, event, func) {
//用能力检测进行跨浏览器兼容处理
//DOM 2 事件处理
if (ele.addEventListener) {
//false表示冒泡事件模型
ele.addEventListener(event, func, false);
} else if (ele.attachEvent) {
//若是click事件,IE为onclick
ele.attachEvent('on' + event, func);
} else {
//DOM 0级事件,兼容老浏览器
//not ele.'on'+event=func;
//js中.可以用[]进行代替
ele['on' + event] = func;
}
},
//删除事件函数
delEvent: function(ele, event, func) {
if (ele.removeEventListener) {
ele.removeEventListener(event, func, false);
} else if (ele.detachEvent) {
ele.detachEvent('on' + event, func); //IE
} else {
//DOM 0级事件,兼容老浏览器
ele['on' + event] = null;
}
},
//获取触发事件的源DOM元素
getSrcElement: function(event) {
//如果event.target不为空,则返回event.target值
//否则返回event.srcElement
return event.target || event.srcElement;
},
//获取事件类型
getType: function(event) {
return event.type;
},
//获取事件
getEvent: function(event) {
//window.event为兼容IE版本
return event ? event : window.event;
},
//阻止事件冒泡
stopBuble: function(event) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cacelBuble = false; //IE
}
},
//禁用默认行为
preventDefault: function(event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false; //IE为属性
}
},
//根据元素ID名称获取元素
$id: function(eleid) {
return document.getElementById(eleid);
},
//根据ClassName获取元素数组,提供父元素能提高检索效率
//用法:var eles=getByClass('foo');
getByClass: function(className, parent) {
//如果不提供parent,则返回顶级元素document
var oParent = parent ? this.$id(parent) : document;
//能力检测
if (oParent.getElementsByClassName) {
//通过在字符串中使用空格分隔类,也可以匹配多个类,
//下面的代码挑选出了所有既拥有foo类名称又拥有bar类名称的元素:
//var eles = document.getElementsByClassName('foo bar');
return oParent.getElementsByClassName(className);
} else {
var retEles = [];
//获取父元素下的所有子元素
var childs = oParent.getElementsByTagName('*');
for (var i = 0, len = childs.length; i < len; i++) {
//元素className类名匹配
if (childs[i].className == className) {
retEles.push(childs[i]);
}
}
return retEles;
}
},
//根据ClassName获取首元素
getFirstByClass: function(className, parent) {
//var eles=getByClass(className,parent);
//不加this.往往报getByClass未定义的错误
var eles = this.getByClass(className, parent);
return eles[0];
},
//获取版本信息
getVersion: function() {
return 'Version:' + this.version;
}
};