整合營銷服務商

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

          免費咨詢熱線:

          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一区二区三区四区| 久久se精品动漫一区二区三区| 91福利视频一区| 一区二区三区高清在线| 国产精品亚洲午夜一区二区三区| 亚洲一区二区女搞男| 一区二区三区电影网| 日韩人妻无码免费视频一区二区三区| 色窝窝无码一区二区三区 | 鲁丝片一区二区三区免费| 精品国产一区二区三区久| 中文字幕一区在线观看视频| 日本免费一区二区三区四区五六区 | 成人在线视频一区| 国产伦理一区二区三区| 国产精品亚洲专区一区| 国产一区二区三区在线免费观看| 日韩一区二区在线免费观看| 福利国产微拍广场一区视频在线| 无码夜色一区二区三区| 欧美成人aaa片一区国产精品| 久久精品日韩一区国产二区| 国产成人精品一区二区A片带套| 国产经典一区二区三区蜜芽| 亚洲av永久无码一区二区三区 | 国产丝袜视频一区二区三区| 日本高清成本人视频一区| 激情一区二区三区| 中文字幕一区二区三区精彩视频| 亚洲码欧美码一区二区三区| 精品国产高清自在线一区二区三区| 精品国产一区二区三区免费看| 视频在线一区二区三区| 精品国产免费一区二区三区| 性色av一区二区三区夜夜嗨| 日本精品无码一区二区三区久久久 | 中文字幕一区二区在线播放| 国产亚洲无线码一区二区 | 无码一区二区三区中文字幕| 无码精品人妻一区二区三区影院 |