当前仅显示指定条件回帖 [ 展开查看全部 ]
文件名称:
README.md
所在目录:
DOM2 / DOM2事件 / 1、事件基础
文件大小:
3.49 KB
下载地址:
文本预览:
#事件基础
**事件是什么**:就是一件事,包括硬件的一些行为;
- click
- mouseover
- mouseout
- keydown
- keyup
**什么是绑定**:事件监听;
**具体某一个事件和事件整体的区别**:一件事,和一套事件系统
**什么是事件对象**:实现事件系统,事件的机制,浏览器自己有一套机制;类似人的神经系统,这个内置第机制就是事件对象;
事件演示:
> var oDiv=document.getElementById("div1");
oDiv.onmousemove=function(event){
//直接把一个方法赋值给一个事件属性.这个方法运行的时候,浏览器会自动的给这个方法传一个对象;这个对象就是事件对象;
event=event||window.event;//IE下的事件对象,是一个全局的event;这种的是兼容写法;
event.clientX;//鼠标的X轴坐标;
event.clientY;//鼠标的Y轴坐标;
//时间有即时行;
event.type;//事件类型;只和当时发生的类型有关;只能同时处理一个事件;
this.innerHTML="X:"+event.clientX+" Y:"+event.clientY;
};
document.documentElement.onkeydown= function (event) {
event=event||window.event;
oDiv.innerHTML=event.keyCode;
}
//pageX;pageY;鼠标距离文档(当前页面的)最上角的距离;不支持IE678;
//clientX;clientY;指的是浏览器;
//onmouseover和onmouseenter区别;over会传播,enter是不传播的;
//onmouseout和onmouselive区别;
取消冒泡的方法;
> //阻止事件传播/冒泡的方法;
this.appendChild(ele);
ele.onmouseover=function(event){
event=event||window.event;
if(event.stopPropagation){
event.stopPropagation();//标准留言器中禁止冒泡;
// preventDefault中文意思是阻止默认行为;
}else{
e.cancelBubble=true;//IE浏览器禁止冒泡;IE678
}
}
onmouseenter的优势;
> // onmouseover和onmouseenter很像,但是可以避免;onmouseover的一些问题;
// 如果是从父元素到子元素,不会触发onmouseover;
// 如果是从子元素到父元素,也不会触发onmouseover;
事件的冒泡和捕获
> function fn(){
console.log(this.nodeName)
}
eles=document.documentElement.getElementsByTagName("*");
for(var i=0;i
//eles[i].addEventListener("click",fn,false);//SPAN、LI、UL、DIV、BODY
eles[i].addEventListener("click",fn,true);//BODY、DIV、UL、LI、SPAN
}
冒泡和捕获是事件的两个阶段,我们可以在不同阶段来绑定(监听)处理方法;
如果用false是冒泡,如果是true是捕获;
一般都是用false来处理的
事件委托:
> document.documentElement.onclick=function(event){
event=event||window.event;
//事件源委托给documentElement
target=event.target||event.srcElement;//事件源
console.log(target.nodeName)
}
下面是具体应用
> document.documentElement.onclick=function(event){
event=event||window.event;
//事件源委托给documentElement
target=event.target||event.srcElement;//事件源
console.log(target.nodeName)
};
//下面是动态创建的
var p=document.createElement("p");
document.body.appendChild(p);
p.innerHTML="222312312312";
/*事件委托也可以实现动态绑定*/
/*所有的事件,都可以用事件委托来实现;时间委托是一个高级技巧*/
**事件是什么**:就是一件事,包括硬件的一些行为;
- click
- mouseover
- mouseout
- keydown
- keyup
**什么是绑定**:事件监听;
**具体某一个事件和事件整体的区别**:一件事,和一套事件系统
**什么是事件对象**:实现事件系统,事件的机制,浏览器自己有一套机制;类似人的神经系统,这个内置第机制就是事件对象;
事件演示:
> var oDiv=document.getElementById("div1");
oDiv.onmousemove=function(event){
//直接把一个方法赋值给一个事件属性.这个方法运行的时候,浏览器会自动的给这个方法传一个对象;这个对象就是事件对象;
event=event||window.event;//IE下的事件对象,是一个全局的event;这种的是兼容写法;
event.clientX;//鼠标的X轴坐标;
event.clientY;//鼠标的Y轴坐标;
//时间有即时行;
event.type;//事件类型;只和当时发生的类型有关;只能同时处理一个事件;
this.innerHTML="X:"+event.clientX+" Y:"+event.clientY;
};
document.documentElement.onkeydown= function (event) {
event=event||window.event;
oDiv.innerHTML=event.keyCode;
}
//pageX;pageY;鼠标距离文档(当前页面的)最上角的距离;不支持IE678;
//clientX;clientY;指的是浏览器;
//onmouseover和onmouseenter区别;over会传播,enter是不传播的;
//onmouseout和onmouselive区别;
取消冒泡的方法;
> //阻止事件传播/冒泡的方法;
this.appendChild(ele);
ele.onmouseover=function(event){
event=event||window.event;
if(event.stopPropagation){
event.stopPropagation();//标准留言器中禁止冒泡;
// preventDefault中文意思是阻止默认行为;
}else{
e.cancelBubble=true;//IE浏览器禁止冒泡;IE678
}
}
onmouseenter的优势;
> // onmouseover和onmouseenter很像,但是可以避免;onmouseover的一些问题;
// 如果是从父元素到子元素,不会触发onmouseover;
// 如果是从子元素到父元素,也不会触发onmouseover;
事件的冒泡和捕获
> function fn(){
console.log(this.nodeName)
}
eles=document.documentElement.getElementsByTagName("*");
for(var i=0;i
eles[i].addEventListener("click",fn,true);//BODY、DIV、UL、LI、SPAN
}
冒泡和捕获是事件的两个阶段,我们可以在不同阶段来绑定(监听)处理方法;
如果用false是冒泡,如果是true是捕获;
一般都是用false来处理的
事件委托:
> document.documentElement.onclick=function(event){
event=event||window.event;
//事件源委托给documentElement
target=event.target||event.srcElement;//事件源
console.log(target.nodeName)
}
下面是具体应用
> document.documentElement.onclick=function(event){
event=event||window.event;
//事件源委托给documentElement
target=event.target||event.srcElement;//事件源
console.log(target.nodeName)
};
//下面是动态创建的
var p=document.createElement("p");
document.body.appendChild(p);
p.innerHTML="222312312312";
/*事件委托也可以实现动态绑定*/
/*所有的事件,都可以用事件委托来实现;时间委托是一个高级技巧*/
点赞
回复
X