<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JQuery如何阻止事件冒泡

          共 4350字,需瀏覽 9分鐘

           ·

          2021-03-08 11:01


          冒泡事件就是點(diǎn)擊子節(jié)點(diǎn),會(huì)向上觸發(fā)父節(jié)點(diǎn),祖先節(jié)點(diǎn)的點(diǎn)擊事件。
          我們在平時(shí)的開發(fā)過程中,肯定會(huì)遇到在一個(gè)div(這個(gè)div可以是元素)包裹一個(gè)div的情況,但是呢,在這兩個(gè)div上都添加了事件,如果點(diǎn)擊里面的div我們希望處理這個(gè)div的事件,但是呢,我們不希望外層的div的事件也執(zhí)行,這時(shí)候我們就要用到阻止冒泡。
          通俗點(diǎn)來說吧,你在家里看電視,躲在自己的小房間,但是你不希望聲音傳到隔壁父母的耳朵里,這時(shí)候,你可能躲在被窩里,或者墻壁的隔音效果很好,阻隔聲音可以理解為阻止冒泡。
          <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時(shí),會(huì)觸發(fā)大div與body 的點(diǎn)擊事件。點(diǎn)擊大div時(shí)會(huì)觸發(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(); // 阻止事件冒泡

          有時(shí)候點(diǎn)擊提交按鈕會(huì)有一些默認(rèn)事件。比如跳轉(zhuǎn)到別的界面。但是如果沒有通過驗(yàn)證的話,就不應(yīng)該跳轉(zhuǎn)。這時(shí)候可以通過設(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ī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  草草永久地址发布页①免费 | 在线亚洲黄色视频 | 日本男人天堂 | 成人AV毛片 | 91精品国产综合久久久不打电影 |