美文网首页
事件冒泡

事件冒泡

作者: 暴走的金坤酸奶味 | 来源:发表于2018-09-25 08:13 被阅读0次

    什么是事件冒泡

    在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。

    事件冒泡的作用

    事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件。

    阻止事件冒泡

    事件冒泡机制有时候是不需要的,需要阻止掉,通过 event.stopPropagation() 来阻止

    合并阻止操作

    return false;

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>事件冒泡</title>
        <style type="text/css">
            .grandfather{
                width: 300px;
                height: 300px;
                background-color: green;
                position: relative;
            }
            .father{
                width: 200px;
                height: 200px;
                background-color: gold;
            }
            .son{
                width: 100px;
                height: 100px;
                background-color: red;
                position: absolute;
                left: 0;
                top: 400px;
            }
        </style>
        <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
            $(function(){
                $('body').click(function() {
                    alert(4);
                });
                $('.grandfather').click(function() {
                    alert(3);
                });
                $('.father').click(function() {
                    alert(2);
                });
                $('.son').click(function(event) {//event代表当前事件
                    alert(1);
                    // console.log(event);//显示很多属性,其中clientX、clientY就是点击的坐标
                    // alert("X轴坐标:" + event.clientX);
    
                    // //阻止事件冒泡
                    // event.stopPropagation();
    
                    //合并阻止操作:把阻止冒泡和阻止默认行为合并
                    return false;
                });
    
                //阻止右键菜单
                $(document).contextmenu(function(event){
                    // //阻止默认行为(原来右键能弹出菜单,阻止后无法弹出)
                    // event.preventDefault();
    
                    //合并阻止
                    return false;
                })
            })
        </script>
    </head>
    <body>
        <div class="grandfather">
            <div class="father">
                <div class="son"></div>
            </div>
        </div>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:事件冒泡

          本文链接:https://www.haomeiwen.com/subject/ftdkoftx.html