zoukankan      html  css  js  c++  java
  • 浅谈--事件冒泡和阻止默认行为

          一.事件冒泡

        在页面上可以有多个事件,也可以多个元素响应同一个事件,比如有这样一个场景,在网页上的body标签中,有两个嵌套的div,这时我们通过代码给

    body标签和两个div标签注册click事件,当你单击内层的div时外层的div和body标签的事件也触发的,这就是事件冒泡。

        二.如何停止事件冒泡

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <script src="../js/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            /*
            构建场景:在body标签中有一div标签在一个div标签中有嵌套一个div标签
            现在要给body,第一个div,第二个div标签加上click事件。
            */
            $(function () {
                /*
                1.当单击内层div时:冒泡的顺序是:总里到外:内层div----外层div-----body
                2.当单击内层div时,自身的背景颜色变了,外层div背景颜色也变了甚至连body的背景颜色也变了
                3.解决方案:
                   只需要为函数添加一个参数event即可,当单击某个元素时,事件对象就被创建了,这个事件对象
                   只有只有事件处理函数才能访问到,事件对象就别销毁。
                4.停止事件冒泡:
                   这里用到了even.stopPropagation()
                5. 可以把 even.stopPropagation();简写成return false
                */
                //给body标签注册单击事件给body标签加上背景颜色
                $("body").click(function (even) {
                    $(this).css("background", "blue");
                    even.stopPropagation();
                   // return false;
                });
                //给id为menu(外层div)标签注册单击事件给外层div标签加上背景颜色
                $("#menu").click(function (even) {
                    $(this).css("background", "red");
                    even.stopPropagation();
                    //return false;
                });
                //给id为childen(内层div)标签注册单击事件给内层div标签加上背景颜色
                $("#childen").click(function (even) {
                    $(this).css("background", "pink");
                   even.stopPropagation();
                   // return false;
                });
            });
    
        </script>
    </head>
    <body>
        我是body
        <div id="menu">
            我是外层div
            <div id="childen">我是内存div</div>
        </div>
    </body>
    </html>

          三.阻止默认行为

      网页中的元素有自己的默认的行为,例如,单击超链接会跳转,单击提交按钮会提交表单,但我门有时候要阻止这种默认行为,比如,当你点击提交按钮时,用户名为空此时就要

    阻止默认行为。

         

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <style type="text/css">
            #menu {
            500px;
            height:500px;
            margin:0px auto;
            }
        </style>
        <script src="../js/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            /*
            阻止默认行为
            */
            $(function () {
                $("input[type=submit]").click(function (event) {
                    //获取到文本内容
                    var name = $("input[type=text]").val();
                   if (name=="") {
                       $("#result").html("用户名不能为空!");
                       event.preventDefault();//阻止默认行为
                   }
                });
            });
        </script>
    </head>
    <body>
        <form action="/" method="post">
            <div id="menu">
                 用户名:<input type="text" name="name"/>
            <input type="submit" name="name" value="提交" />
            <div id="result"></div>
            </div>
        </form>
    </body>
    </html>

  • 相关阅读:
    delphi TMemoryStream读取html文件中文乱码
    tfrxbarcode2dview 和 tfrxbarcode not found 解决办法
    delphi ForceDirectories 用法
    Java Scanner next() 与 nextLine() 区别
    delphi 用superobject解析json
    delphi 方法可以提前声明
    delphi 判断文件是否被占用
    mysql explain用法和结果的含义
    C# SpinWait
    js异步编程
  • 原文地址:https://www.cnblogs.com/hyjj/p/5522255.html
Copyright © 2011-2022 走看看