标签:
原文链接:http://www.cnblogs.com/xxcanghai/p/5205998.html
1、事件的三个阶段:事件捕获、目标、事件冒泡 (低版本的IE不支持捕获)
2、传统、IE和W3C不同绑定事件、解绑事件的方法有什么区别,参数分别是什么,以及事件对象e有什么区别
传统方法:
element.onclick = function(e){ // ... };
IE方式:
element.attachEvent(‘onclick‘, function(){ // ... });
W3C方式
element.addEventListener(‘click‘, function(e){ // ... }, false);
适应各种浏览器
var event = { addHander:function(element,type,fun){ if(element.addEventListener){//dom2 非ie模式 element.addEventListener(type,fun,false); }else if(element.attachEvent){ element.attachEvent("on"+type,fun);//dom2 ie模式 }else{ element["on"+type] = fun;//dom0 传统模式 支持ie8以上及非ie } }, removerHander:function(element,type,fun){ if(element.removeEventListener){ element.removeEventListener(type,fun,false); }else if(element.detachEvent){ element.detachEvent("on"+type,fun); }else{ element["on"+type] = null; } }, getEvent:function(event){//event对象 非ie || ie return event ? event : window.event; }, getTarget:function(event){//获取当前目标元素 非ie || ie return event.getTarget || event.srcElement; }, preventDefalut:function(event){//阻止默认事件 if(event.preventDefalut){ event.preventDefalut(); }else{ event.returnValue = false; } }, stopPropagation:function(event){//阻止捕获或冒泡 if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble = true; } } }
3、事件的代理/委托的原理以及优缺点,这是靠事件的冒泡机制来实现的
(1)、可以大量节省内存占用,减少事件注册,比如在table上代理所有td的click事件就非常棒
(2)、可以实现当新增子对象时无需再次对其绑定事件,对于动态内容部分尤为合适
那么极有可能要求让你【实现事件模型】,即写一个类或是一个模块,有两个函数,
一个bind一个trigger,分别实现绑定事件和触发事件,
核心需求就是可以对某一个事件名称绑定多个事件响应函数,
然后触发这个事件名称时,依次按绑定顺序触发相应的响应函数。
标签:
原文地址:http://www.cnblogs.com/wxiaona/p/5753663.html