#事件基础 **事件是什么**:就是一件事,包括硬件的一些行为; - 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 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"; /*事件委托也可以实现动态绑定*/ /*所有的事件,都可以用事件委托来实现;时间委托是一个高级技巧*/