JavaScript事件,又称DOM事件,指用户对DOM节点进行各种操作时,能触发相应的处理函数。这些操作包括获取焦点、点击、键盘输入、鼠标悬浮、窗口变化等等。
一个JavaScript事件,包括事件绑定、事件触发、事件冒泡、事件捕获、事件处理。下面将详细描述。
var addEvent = function(type, callback) {
if (window.attachEvent) { // IE
this.attachEvent.call(this, "on" + type, callback);
} else if (window.addEventListener) {
this.addEventListener.call(this, type, callback, false);
} else {
alert("无法绑定事件,请将浏览器版本发至评论");
}
return this;
}
注意addEventListener的第三个参数是设置事件是在事件捕获阶段进行还是在事件冒泡阶段进行,true表示在事件捕获阶段进行。事件捕获跟事件冒泡将在下文详细解说。<div id="first">
<span id="second">
<b id="third">111</b>
</span>
</div>
addEvent.call(document.getElementById("first"), "click", function(event) {
console.log("first");
});
addEvent.call(document.getElementById("second"), "click", function(event) {
console.log("second");
});
addEvent.call(document.getElementById("third"), "click", function(event) {
console.log("third");
});
event.cancelBubble = true;// IE
event.stopPropagation();// 非IE
<div id="first">
<span id="second">
<b class="third">111</b>
<b class="third">222</b>
</span>
</div>
function delegate(node, childNodeClass, eventType, func) {
addEvent.call(node, eventType, function(event) {
var classes = event.target.className.split(" ");
if(classes.indexOf(childNodeClass) > -1) {
func(event);
}
})
}
调用时,var node = document.getElementById("first");
delegate(node, "third", "click", function(event) {
console.log(event.target);
})
node.onclick = function(event) {
}
在事件处理函数中,event为其唯一的参数,包含了事件所有的信息和方法。这里我们挑几个常见的说一下:原文:http://www.cnblogs.com/smght/p/4368614.html