1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        JQuery如何阻止事件冒泡

        共 4350字,需瀏覽 9分鐘

         ·

        2021-03-08 11:01


        冒泡事件就是點(diǎn)擊子節(jié)點(diǎn),會向上觸發(fā)父節(jié)點(diǎn),祖先節(jié)點(diǎn)的點(diǎn)擊事件。
        我們在平時的開發(fā)過程中,肯定會遇到在一個div(這個div可以是元素)包裹一個div的情況,但是呢,在這兩個div上都添加了事件,如果點(diǎn)擊里面的div我們希望處理這個div的事件,但是呢,我們不希望外層的div的事件也執(zhí)行,這時候我們就要用到阻止冒泡。
        通俗點(diǎn)來說吧,你在家里看電視,躲在自己的小房間,但是你不希望聲音傳到隔壁父母的耳朵里,這時候,你可能躲在被窩里,或者墻壁的隔音效果很好,阻隔聲音可以理解為阻止冒泡。
        <style>        #content{            width: 140px;            border: 1px solid blue;        }        #msg{            width: 100px;            height: 100px;            margin: 20px;            border: 1px solid red;        }</style>
        <body>  <div id="content">    外層div    <div id="msg">內(nèi)層div</div>  </div></body>

        顯示結(jié)果


        對應(yīng)的jQuery代碼如下:

         <script type="text/JavaScript" src="js/jquery-1.8.3.js"></script>    <script type="text/JavaScript">    $(function(){        // 為內(nèi)層div綁定click事件        $("#msg").click(function(){            alert("我是小div");        });     // 為外層div元素綁定click事件        $("#content").click(function(){            alert("我是大div");        });        // 為body元素綁定click事件        $("body").click(function(){            alert("我是body");        });    });</script>

        當(dāng)點(diǎn)擊小div時,會觸發(fā)大div與body 的點(diǎn)擊事件。點(diǎn)擊大div時會觸發(fā)body的點(diǎn)擊事件。

        如何防止這種冒泡事件發(fā)生呢?

        修改如下:

        <script type="text/javascript" src="js/jquery-1.8.3.js"></script>    <script type="text/javascript">    $(function(){        // 為內(nèi)層div綁定click事件        $("#msg").click(function(event){            alert("我是小div");            event.stopPropagation();    //  阻止事件冒泡        });     // 為外層div元素綁定click事件        $("#content").click(function(event){            alert("我是大div");            event.stopPropagation();    //  阻止事件冒泡        });        // 為body元素綁定click事件        $("body").click(function(event){            alert("我是body");            event.stopPropagation();    //  阻止事件冒泡        });    });

        event.stopPropagation(); // 阻止事件冒泡

        有時候點(diǎn)擊提交按鈕會有一些默認(rèn)事件。比如跳轉(zhuǎn)到別的界面。但是如果沒有通過驗(yàn)證的話,就不應(yīng)該跳轉(zhuǎn)。這時候可以通過設(shè)置event.preventDefault(); //阻止默認(rèn)行為 ( 表單提交 )。

        html部分

         <body>        <form action="test.html">            用戶名:<input type="text" id="username" />            <br/>            <input type="submit" value="提交" id="sub"/>        </form>
        </body>


        <script type="text/javascript" src="js/jquery-1.8.3.js"></script>    <script type="text/javascript">        $(function(){            $("#sub").click(function(event){                //獲取元素的值,val() 方法返回或設(shè)置被選元素的值。                var username = $("#username").val();                  //判斷值是否為空                if(username==""){                     //提示信息                    //alert("文本框的值不能為空");                    $("#msg").html("<p>文本框的值不能為空.</p>");                   //阻止默認(rèn)行為 ( 表單提交 )                    event.preventDefault();                  }            });        });</script>
        //阻止默認(rèn)行為 ( 表單提交 )event.preventDefault();

        還有一種防止默認(rèn)行為的方法就是return false。效果一樣。

        代碼如下:

        <script type="text/javascript" src="js/jquery-1.8.3.js"></script>    <script type="text/javascript">        $(function(){            $("#sub").click(function(event){                //獲取元素的值,val() 方法返回或設(shè)置被選元素的值。                var username = $("#username").val();                  //判斷值是否為空                if(username==""){                     //提示信息                    //alert("文本框的值不能為空");                    $("#msg").html("<p>文本框的值不能為空.</p>");                   //阻止默認(rèn)行為 ( 表單提交 )                    //event.preventDefault();                    return false;                }            });        });</script>

         同理,上面的冒泡事件也可以通過return false來處理

         <script type="text/javascript" src="js/jquery-1.8.3.js"></script>    <script type="text/javascript">    $(function(){        // 為內(nèi)層div綁定click事件        $("#msg").click(function(event){            alert("我是小div");            //event.stopPropagation();    //  阻止事件冒泡                return false;        });     // 為外層div元素綁定click事件        $("#content").click(function(event){            alert("我是大div");            //event.stopPropagation();    //  阻止事件冒泡                 return false;        });        // 為body元素綁定click事件        $("body").click(function(event){            alert("我是body");            //event.stopPropagation();    //  阻止事件冒泡                return false;        });    });

        本文完?


        瀏覽 38
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            天天射天天干好逼网 | 色哟哟成人 | 做爱网站视频免费观看黄色 | 操射视频| 中文字幕在线码 | 操比在线| 国产va视频 | 床叫不停娇撞击娇吟肚兜 | 男人操女人免费网站 | 狠狠色综合777 |