整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript 事件冒泡-如何阻止點擊事件

          <div class="subcategories">這里有點擊事件</div>
          <div class="subcategories">這里有點擊事件</div>
          <div class="subcategories">這里有點擊事件</div>
          <script type="text/javascript">
          //阻止點擊事件
          $(function() {
              $(".subcategories").click(function(event) {
                  event.stopPropagation();
              });
          });
          </script>

          么是JS事件冒泡?

          在一個對象上觸發某類事件(比如單擊onclick事件), 如果此對象定義了此事件的處理程序, 那么此事件就會調用這個處理程序, 如果沒有定義此事件處理程序或者事件返回true,

          那么這個事件會向這個對象的父級對象傳播, 從里到外, 直至它被處理(父級對象所有同類事件都將被激活), 或者它到達了對象層次的最頂層, 即document對象(有些瀏覽器是window)。

          如何來阻止Jquery事件冒泡?

          通過一個小例子來解釋

          <!DOCTYPE html>
          <html>
          <head runat="server">
          <title>Porschev---Jquery 事件冒泡</title>
          <script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
          </head>
          <body>
            <form id="form1" runat="server">
              <div id="divOne" onclick="alert('我是最外層');">
                <div id="divTwo" onclick="alert('我是中間層!')">
                  <a id="hr_three" href="http://www.baidu.com" mce_href="http://www.baidu.com"onclick="alert('我是最里層!')">點擊我</a>
                </div>
              </div>
            </form>
          </body>
          </html>

          比如上面這個頁面,

          分為三層:divOne是第外層,divTwo中間層,hr_three是最里層;

          他們都有各自的click事件,最里層a標簽還有href屬性。

          運行頁面,點擊“點擊我”,會依次彈出:我是最里層---->我是中間層---->我是最外層

          ---->然后再鏈接到百度.


          這就是事件冒泡, 本來我只點擊ID為hr_three的標簽, 但是確執行了三個alert操作。

          事件冒泡過程(以標簽ID表示):hr_three----> divTwo----> divOne 。從最里層冒泡到最外層。

          如何來阻止?

          1.event.stopPropagation();

          <script type="text/javascript">
          $(function() {
          $("#hr_three").click(function(event) {
          event.stopPropagation();
          });
          });
          <script>

          再點擊"點擊我", 會彈出:我是最里層, 然后鏈接到百度


          2.return false;

          如果頭部加入的是以下代碼

          <script type="text/javascript">
          $(function() {
            $("#hr_three").click(function(event) {
              return false;
            });
          });
          <script>

          再點擊"點擊我", 會彈出:我是最里層, 但不會執行鏈接到百度頁面


          由此可以看出:

          1.event.stopPropagation();

          事件處理過程中,阻止了事件冒泡,但不會阻擊默認行為(它就執行了超鏈接的跳轉)


          2.return false;

          事件處理過程中,阻止了事件冒泡,也阻止了默認行為(比如剛才它就沒有執行超鏈接的跳轉)


          還有一種有冒泡有關的:

          3.event.preventDefault();

          如果把它放在頭部A標簽的click事件中, 點擊"點擊我"。

          會發現它依次彈出:我是最里層---->我是中間層---->我是最外層, 但最后卻沒有跳轉到百度

          它的作用是:事件處理過程中, 不阻擊事件冒泡, 但阻擊默認行為(它只執行所有彈框, 卻沒有執行超鏈接跳轉)

          止事件流:

          event.stopPropagation(); //主流瀏覽器

          window.event.cancelBubble = true; // IE(678)瀏覽器

          冒泡型、捕捉型都可以進行阻止,為了阻止比較有意義, 只考慮冒泡型。

          注意:最新的Firefix、chrome等W3C瀏覽器也開始支持cancelBubble屬性。

          兼容性寫法:

          function stopBubble(e){
              if(e && e.stopPropagation)
              // 因此它支持W3C的stopPropation()方法
              e.stopPropagation();
              else
              // 否則, 我們得使用IE的方法來取消事件冒泡
              window.event.cancelBubble=true;
          }
          

          實例1:

          <html>
          <head>
          <title>新建網頁</title>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <style type="text/css">
          div {width:300px; height:200px; background-color:lightgreen;}
          p {width:200px; height:100px; background-color:lightblue;}
          span { background-color:pink;}
          </style>
          </head>
          <body>
          <h2>事件流</h2>
          <div>
          <p>
          <span>I am span tag</span>
          </p>
          </div>
          </body>
          </html>
          <script type="text/javascript">
          var sp = document.getElementsByTagName("span")[0];
          var pt = document.getElementsByTagName("p")[0];
          var dv = document.getElementsByTagName("div")[0];
          sp.addEventListener("click",function(evt){
              document.write("span tag");
              evt.stopProgagation();
          },false);
          pt.addEventListener("click",function(evt){
              document.write("p tag");
              evt.stopPropagation();
          },false);
          dv.addEventListener("click",function(evt){
              document.write("div tag");
              evt.stopPropagation();
          },false);
          </script>

          實例2:

          <html>
          <head>
          <style type="text/css">
          #hide{width:75%;height:80px;background:skyblue;display:block;}
          .hander{cursor:pointer;}
          input{margin:5 0 0 900;}
          </style>
          <script>
          //不用window.onload也可以
          document.documentElement.onclick = function() {
          document.getElementById('hide').style.display = 'none';
          }
          //阻止冒泡事件方法
          function stopBubble(e) {
              e = e || window.event;
              if(e.stopPropagation) { //W3C阻止冒泡方法
              e.stopPropagation();
              } else {
              e.cancelBubble = true; //IE阻止冒泡方法
              }
          }
          //方法必須要放在window.onload下
          window.onload = function(){
              document.getElementById("hide").onclick = function(e) {
              stopBubble(e);
              }
              document.getElementById('btn_show').onclick = function(e) {
              document.getElementById('hide').style.display = 'block';
              stopBubble(e);
              }
          }
          </script>
          </head>
          <body>
          <div id="hide" class="hander">click here nothing happen,you can click beside this area</div>
          <input type="button" id="btn_show" value="show" class="hander"/>
          </body>
          </html>

          onclick 如何阻止事件冒泡

          avascript原生阻止冒泡

          <html>
          <head>
          <style type="text/css">
          #hide{width:75%;height:80px;background:skyblue;display:block;}
          .hander{cursor:pointer;}
          input{margin:5 0 0 900;}
          </style>
          <script>
              //不用window.onload也可以
              document.documentElement.onclick = function() {
              		document.getElementById('hide').style.display = 'none';
              }
          //阻止冒泡事件方法
          function stopBubble(e) {
              e = e || window.event;
              if(e.stopPropagation) { //W3C阻止冒泡方法
              e.stopPropagation();
              } else {
              e.cancelBubble = true; //IE阻止冒泡方法
              }
          }
          //方法必須要放在window.onload下
          window.onload = function(){
              document.getElementById("hide").onclick = function(e) {
              stopBubble(e);
              }
              document.getElementById('btn_show').onclick = function(e) {
              document.getElementById('hide').style.display = 'block';
              stopBubble(e);
              }
          }
          </script>
          </head>
          <body>
          <div id="hide" class="hander">click here nothing happen,you can click beside this area</div>
          <input type="button" id="btn_show" value="show" class="hander"/>
          </body>
          onclick 如何阻止事件冒泡
          <div id="id_tag_list"><span class="right">▼</span><span class="label" onclick="deleteLabel(this)">Python數據分析與應用</span></div>
          //刪除標簽的方法
          function deleteLabel(target){
              var e = target;
              if(e && e.stopPropagation){ //阻止冒泡
                // 因此它支持W3C的stopPropation()方法
                e.stopPropagation();
              }else{
                // 否則, 我們得使用IE的方法來取消事件冒泡
                window.event.cancelBubble=true;
              }
          }

          jQuery如何阻止事件冒泡

          <div class="subcategories">這里有點擊事件</div>
          <div class="subcategories">這里有點擊事件</div>
          <div class="subcategories">這里有點擊事件</div>


          <script type="text/javascript">
          //阻止點擊事件
          $(function() {
              $(".subcategories").click(function(event) {
                  event.stopPropagation();
              });
          });
          </script>

          什么是js事件冒泡?

          在一個對象上觸發某類事件(比如單擊onclick事件), 如果此對象定義了此事件的處理程序, 那么此事件就會調用這個處理程序, 如果沒有定義此事件處理程序或者事件返回true,

          那么這個事件會向這個對象的父級對象傳播, 從里到外, 直至它被處理(父級對象所有同類事件都將被激活), 或者它到達了對象層次的最頂層, 即document對象(有些瀏覽器是window)。

          如何來阻止Jquery事件冒泡?

          <!DOCTYPE html>
          <html">
          <head runat="server">
          <title>Jquery 事件冒泡</title>
          <script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
          </head>
          <body>
            <form id="form1" runat="server">
              <div id="divOne" onclick="alert('我是最外層');">
                <div id="divTwo" onclick="alert('我是中間層!')">
                  <a id="hr_three" href="http://www.xxxxxx.com" mce_href="http://www.xxxxxx.com"onclick="alert('我是最里層!')">點擊我</a>
                </div>
              </div>
            </form>
          </body>
          </html>

          比如上面這個頁面,

          分為三層:divOne是第外層,divTwo中間層,hr_three是最里層;

          他們都有各自的click事件,最里層a標簽還有href屬性。

          運行頁面,點擊“點擊我”,會依次彈出:我是最里層---->我是中間層---->我是最外層

          ---->然后再鏈接到百度.


          這就是事件冒泡, 本來我只點擊ID為hr_three的標簽, 但是確執行了三個alert操作。

          事件冒泡過程(以標簽ID表示):hr_three----> divTwo----> divOne 。從最里層冒泡到最外層。

          如何來阻止?

          1.event.stopPropagation();

          <script type="text/javascript">
          $(function() {
          $("#hr_three").click(function(event) {
          event.stopPropagation();
          });
          });
          <script>

          再點擊"點擊我", 會彈出:我是最里層, 然后鏈接到百度


          2.return false;

          如果頭部加入的是以下代碼

          <script type="text/javascript">
          $(function() {
            $("#hr_three").click(function(event) {
              return false;
            });
          });
          <script>

          再點擊"點擊我", 會彈出:我是最里層, 但不會執行鏈接到百度頁面


          由此可以看出:

          1.event.stopPropagation();

          事件處理過程中,阻止了事件冒泡,但不會阻擊默認行為(它就執行了超鏈接的跳轉)


          2.return false;

          事件處理過程中,阻止了事件冒泡,也阻止了默認行為(比如剛才它就沒有執行超鏈接的跳轉)


          還有一種有冒泡有關的:

          3.event.preventDefault();

          如果把它放在頭部A標簽的click事件中, 點擊"點擊我"。

          會發現它依次彈出:我是最里層---->我是中間層---->我是最外層, 但最后卻沒有跳轉到百度

          它的作用是:事件處理過程中, 不阻擊事件冒泡, 但阻擊默認行為(它只執行所有彈框, 卻沒有執行超鏈接跳轉)


          主站蜘蛛池模板: 亚洲AV噜噜一区二区三区| 国产美女一区二区三区| 视频一区视频二区制服丝袜| 久久精品国产一区二区三区日韩| 日本一区二区三区不卡视频| 国产一区视频在线| 精品一区二区三区影院在线午夜 | 日韩精品福利视频一区二区三区| 久久中文字幕无码一区二区| 欧美日韩国产免费一区二区三区| 精品一区二区三区波多野结衣| 消息称老熟妇乱视频一区二区| 日本高清成本人视频一区| 少妇人妻偷人精品一区二区| 日韩精品无码中文字幕一区二区| 亚洲国产激情在线一区| 日韩最新视频一区二区三| 无码中文字幕人妻在线一区二区三区 | 久久一区二区三区99| 亚洲av一综合av一区| 成人欧美一区二区三区在线视频 | 国产在线视频一区二区三区| 中文日韩字幕一区在线观看| 亚洲一区二区在线视频| 在线观看国产一区亚洲bd| 制服中文字幕一区二区| 亚洲熟妇AV一区二区三区宅男| 北岛玲在线一区二区| 久久精品道一区二区三区| 一区一区三区产品乱码| 99精品高清视频一区二区| 精品欧洲av无码一区二区三区| 视频精品一区二区三区| 色窝窝无码一区二区三区成人网站 | 国产一区二区三区免费在线观看| 无码视频一区二区三区在线观看| 天美传媒一区二区三区| 日本免费一区二区三区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲影视一区二区| 色婷婷AV一区二区三区浪潮|