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

目录
相关文章
|
3月前
|
JavaScript 前端开发 UED
JS DOM 事件流与事件冒泡
【10月更文挑战第16天】理解 DOM 事件流和事件冒泡是掌握 JavaScript 事件处理的关键。通过合理利用事件冒泡,可以实现更高效、灵活的事件处理机制,提升用户体验和开发效率。在实际开发中,要根据具体情况灵活运用这些概念,以达到最佳的效果。
107 42
|
3月前
|
JavaScript 前端开发
JavaScript 事件对象
JavaScript 事件对象
37 2
|
26天前
|
JavaScript 前端开发
捕获键盘输入和输入组合键的js库hotkeys
捕获键盘输入和输入组合键的js库hotkeys
|
4月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
4月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
3月前
|
JavaScript 前端开发
【干货分享】JavaScript学习笔记分享
【干货分享】JavaScript学习笔记分享
68 0
|
3月前
|
JavaScript 前端开发 UED
JavaScript中的事件冒泡
JavaScript中的事件冒泡
|
5月前
|
JavaScript 前端开发 UED
JavaScript中的事件冒泡
JavaScript中的事件冒泡
36 1
|
4月前
|
存储 JavaScript 前端开发
js事件冒泡和事件委托
事件冒泡是指事件从最内层元素开始逐级向上传播至祖先元素的过程,默认情况下,点击子元素时会先触发自身的事件处理程序,再依次向上触发父元素的处理程序。事件委托则是在父元素上设置事件处理程序,利用事件冒泡机制处理子元素的事件,以此减少内存消耗和提高性能,特别适用于处理大量动态子元素的情况。其区别在于事件冒泡是事件传播机制的一部分,而事件委托是编程技巧,通过在父元素上绑定事件处理程序来简化子元素的事件处理。
33 0
|
5月前
|
JavaScript 前端开发 API
JavaScript的事件对象
JavaScript的事件对象
39 0