JS基础面试题

1、什么是事件冒泡

IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点。

2、如何利用事件冒泡

  1. 事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件
    <div onclick="eventHandle(event)" id="outSide" 
            style="width:100px;
             height:100px; 
             background:#000; 
             padding:50px">

        <div id="inSide" style="width:100px; height:100px; background:#CCC"></div>

    </div>


    function eventHandle (e) {
         var e=e||window.event;
         var obj=e.target||e.srcElement;
         console.log(obj.id+' was click')
     }
0.jpg
  1. 让不同的对象同时捕获同一事件,并调用自己的专属处理程序做自己的事情
    <div onclick="outSideWork()"
            id="outSide" 
            style="width:100px; height:100px; background:#000; padding:50px">

        <div onclick="inSideWork()"
                id="inSide" 
                style="width:100px; height:100px; background:#CCC"></div>

    </div>

function outSideWork(){  // 点击外层div,内层不会被触发
    alert('My name is outSide,I was working...');  
}
function inSideWork(){    // 点击里面的div,这个事件完了再直接上一层
    alert('My name is inSide,I was working...');
}

3、如何阻止冒泡

e.stopPropagation()
window.event.cancelBubble = true

<div    onclick="showMsg(this,event)" 
        id="outSide" 
        style="width:100px; height:100px; background:#000; padding:50px">

    <div    onclick="showMsg(this,event)" 
            id="inSide" 
            style="width:100px; height:100px; background:#CCC"></div>
</div>


function stopBubble(e){
    if (e && e.stopPropagation)
        e.stopPropagation()
    else
        window.event.cancelBubble=true
}
function showMsg(obj,e){
    alert(obj.id);
    stopBubble(e)
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • JavaScript 程序采用了异步事件驱动编程模型。在这种程序设计风格下,当文档、浏览器、元素或与之相关的对象发...
    劼哥stone阅读 5,031评论 3 11
  • 以下文章为转载,对理解JavaScript中的事件处理机制很有帮助,浅显易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy阅读 8,193评论 1 10
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 11,949评论 1 6
  • 一、问答 1. dom对象的innerText和innerHTML有什么区别? innerHTML: 也就是从对象...
    饥人谷_罗伟恩阅读 3,841评论 0 2
  • 每一天要说很多的话,每一次的会话都是一次沟通:同事之间的聊天,工作中的汇报,客户之间的交流,都是形式和内容不同的社...
    柒零晓阅读 5,351评论 7 4

友情链接更多精彩内容