1.事件冒泡与事件捕获

2.事件与事件句柄
 
3.事件委托:利用事件的冒泡技术。子元素的事件最终会冒泡到父元素直到跟节点。事件监听会分析从子元素冒泡上来的事件。
事件委托的好处:
    1.每个函数都是对象,都会占用内存,内存中对象越多,性能越差。
    2.必须事先指定所有事件处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间。
怎样处理由于事件较多引起的性能差:
1.采用事件委托技术,限制简历的连接数量
2.在不需要的时候移除事件处理程序
例子:
html:
<div id="myDiv"><input type="button" value="点我" id="myBtn">
</div>

 
js:
var btn=document.getElementById("myBtn");
btn.onclick=function(){document.getElementById("myDiv").innerHTML="Progress...";
}

注意:通过设置innerHTML可以把按钮移走,但是事件处理程序依旧与按钮保持着事件处理程序的引用都保存在内存中。
    所以最好手动移除:
 
var btn=document.getElementById("myBtn");
btn.onclick=function(){btn.onclick=null;//移除事件处理程序document.getElementById("myDiv").innerHTML="Progress...";
}

 
4.事件对象与事件源
function eventHandler(e){//获取事件对象
e = e || window.event;//IE和Chrome下是window.event FF下是e //获取事件源
var target = e.target || e.srcElement;//IE和Chrome下是srcElement FF下是target
}

5.取消事件默认行为

function eventHandler(e) {e = e || window.event;// 防止默认行为 if (e.preventDefault) {e.preventDefault();//IE以外 } else {e.returnValue = false;//IE //注意:这个地方是无法用return false代替的 //return false只能取消元素
    }
}

6.阻止事件冒泡

function myParagraphEventHandler(e) {e = e || window.event;if (e.stopPropagation) {e.stopPropagation();//IE以外 } else {e.cancelBubble = true;//IE
    }
}

7.event与target
event:代表了包含了事件的所有状态。
target:触发事件的元素。
currentTarget:事件绑定的元素。
注意着两者的区别。

html:

<ul id="ulT">
<li class="item1">fsda</li>
<li class="item2">ewre</li>
<li class="item3">qewe</li>
<li class="item4">xvc</li>
<li class="item5">134</li>
</ul>

js:
document.getElementById("ulT").onclick = function  (event) {console.log(event.target);console.log(event.currentTarget);
}

转载:http://www.cnblogs.com/zqzjs/p/4878785.html

JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...相关推荐

  1. JavaScript权威设计--CSS(简要学习笔记十六)

    1.Document的一些特殊属性 document.lastModified document.URL document.title document.referrer document.domai ...

  2. jQuery中的事件冒泡捕获阻止冒泡

    jQuery中的事件冒泡捕获阻止冒泡 事件冒泡 IE中的事件流叫做事件冒泡,就是又最开始的时间接收到逐级向上传播较为不具体的节点.IE9.谷歌浏览器.Safari.Opera等等都是将事件一直冒泡到w ...

  3. 事件冒泡详解及阻止事件冒泡

    什么是事件冒泡? 事件冒泡:从子元素向父元素触发 ->当某个事件触发时,同样的事件会向父元素触发. 但并不是所有事件都会产生冒泡问题 onfocus. onblur .onload不会产生冒泡问 ...

  4. 关于JS 事件冒泡和onclick,click,on()事件触发顺序

    今天在给JQgrid中的标签添加click事件的时候,发现一个问题. JQgrid的table中,点击任何位置,都会勾选点击行的checkbox,而我希望在点击我的标签的时候,不要勾选checkbox ...

  5. js /jquery停止事件冒泡和阻止浏览器默认事件

    var el = window.document.getElementById("a");el.onclick = function (e) {//如果提供了事件对象,则这是一个非 ...

  6. click事件在什么时候出发_关于JS 事件冒泡和onclick,click,on()事件触发顺序

    今天在给JQgrid中的标签添加click事件的时候,发现一个问题. JQgrid的table中,点击任何位置,都会勾选点击行的checkbox,而我希望在点击我的标签的时候,不要勾选checkbox ...

  7. JavaScript学习(十八)--鼠标事件(鼠标点击松开移动效果)

    目录 鼠标的单击事件 鼠标的松开或按下事件 鼠标的移入/移出事件 鼠标移动事件 鼠标单击事件和鼠标双击事件 鼠标拖拽事件 鼠标和键盘事件是在页面操作中使用最频繁的操作,可以利用鼠标事件在页面中实现鼠标 ...

  8. Vue.js 学习笔记 十 自定义按键事件

    <div id="divApp"><!--任何键盘动作都会触发--><input type="text" v-on:keyup=& ...

  9. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...

最新文章

  1. 如何在dnn禁止复制的问题
  2. Oracle生成指定表的列名,并前后添加select from
  3. Matlab符号计算结果过长无法在屏幕中显示的问题
  4. AT1984 Wide Swap
  5. Tcl学习之--表达式
  6. Python《爬虫再练手》
  7. 你敢花一天时间看完本文在简历上添一笔“熟练使用C++编程”吗?
  8. linux虚拟机系统的复制或克隆后续问题解决!
  9. mschart走势图 vc_[VC] 解决MSChart闪烁的问题
  10. 敏捷 - #7 原则:工作软件是进度的主要衡量标准 ( #7 Agile - Principle)
  11. FireMonkey 界面的玩法
  12. 激光打印机无线服务器,插上无线翅膀 兄弟1218W激光打印机评测
  13. STM32F103和STM32F401的ADC多通道采集DMA输出
  14. android 微信浮窗实现_Android仿微信文章悬浮窗效果
  15. 计算机四分位数公式,上四分位数(上下四分位数计算公式)
  16. 小学带计算机2000的检讨书,小学生检讨书范文
  17. 几种经典的下肢力量练习方式
  18. 计算机硬件 系统安装维护教程 01硬件篇-02:主板、内存、显卡、电源、硬盘(NGFF与nvme的关系)
  19. 权限检查authority-check
  20. 防火墙iptables原理及简单应用

热门文章

  1. 学习笔记Hive(五) —— Hive应用(3)—— Hive查询
  2. 各类木材强度_木材的力学性能
  3. js base_64 解密
  4. kibana显示JAVA,elasticsearch kibana简单查询讲解
  5. matlab潮流程序,IEEE33节点matlab潮流程序.doc
  6. 2021-01-07 Python Opencv转换颜色空间 RGB转为HSV
  7. 为什么css设了字体颜色不变,css color设置字体颜色
  8. educational round 前缀和_总结分析634个以re为前缀的单词得出了re为前缀组合单词意思规律
  9. java二维数奇数组金字塔_金字塔内发现一组神奇数字 至今无解(图)
  10. 类和对象:给大家介绍对象