• 技术文章 >web前端 >js教程

    一文详解js中的事件对象、事件源对象和事件流

    藏色散人藏色散人2022-08-07 09:51:13转载100

    js中事件对象、事件源对象、事件流分析理解

    事件对象(event)

    btn.onclick = function(event){let e = event || window.event}

    事件源对象

    简单来说,就是指事件具体是在那个对象上发生的,对于element元素来说,事件源对象就是指你所点击的元素。同样存在浏览器兼容问题:

    事件流

    事件流主要分为两类:1.捕获事件 2.冒泡事件 触发顺序是先捕获在冒泡
    但是如果细分的话在捕获到冒泡阶段会存在一个目标阶段,即所具体操做的dom元素要进行的操作阶段

    捕获事件

    先由最上一级的节点先接收事件,然后向下传播到具体的节点。eg:当用户点击了p元素,采用事件捕获,则click事件将按照document>htm>body>p的顺序进行传播。传递方式是由外向内传递。

    冒泡事件

    和捕获事件相反,它是由内向外传递,当用户点击p时它会向父级传递,p>body>html。***由于这种特性常常用于事件委托。

    事件委托

    我们将所有子元素要触发的相同事件绑定到父元素身上,这样可以减少对DOM操作提高性能。具体使用方法是使用事件源对象的方法。

    <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>

    要对li绑定点击事件,通常我们的做法是循环给li田间点击事件

     let oLi = document.querySelectorAll("li")
     for(let i; i < oLi.length; i++){
                oLi[i].onclick = function(){
                    console.log("i")
                }
            }

    而使用事件委托的方法是

    let oUl = document.querySelector("ul")
      oUl.onclick = function(event){
                let e = event || window.event
                console.log(e.target.innerHTML)
            }

    阻止事件冒泡和阻止默认事件

    阻止事件冒泡的操作(兼容性写法)

    ***有些事件不需要进行冒泡操作

    function stopBubble(event){
        var e = event||window.event //事件对象兼容写法
        e.stopProgation() ? e.stopProgation() : e.cancelBubble = true //IE兼容写法}

    阻止默认事件(兼容写法)

    ***阻止a标签以及鼠标右键默认跳转和菜单事件

    function cancelHandle(event){
        var e = event||window.event
        e.preventDefault() ? e.preventDefault() : e.returnValue = false/*ie*/}

    相关推荐:【JavaScript视频教程

    以上就是一文详解js中的事件对象、事件源对象和事件流的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:javascript 事件对象
    上一篇:实例讲解js如何实现dom元素横向及纵向滚动的动画 下一篇:js实现图片跟随鼠标移动的两种方法
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 怎么给元素添加事件?JS绑定事件三种方式解析• 深入解析JS中的事件对象Event• 一文搞懂JS中的事件冒泡机制• 深入了解JavaScript中的事件冒泡与捕获• JavaScript实例解析之window页面加载事件
    1/1

    PHP中文网