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

简介:

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

目录
相关文章
|
8月前
|
JavaScript 前端开发 Java
【Java进阶】详解JavaScript事件
总的来说,JavaScript事件是JavaScript交互设计的核心,理解和掌握JavaScript事件对于编写高效、响应式的网页应用至关重要。
158 15
|
JavaScript 前端开发
JavaScript 事件对象
JavaScript 事件对象
108 2
|
11月前
|
JavaScript 前端开发 测试技术
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
408 3
|
12月前
|
JavaScript 前端开发
捕获键盘输入和输入组合键的js库hotkeys
捕获键盘输入和输入组合键的js库hotkeys
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
452 5
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
213 6
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
750 0
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
149 0
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
157 2
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
265 1