亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Javascript Event(事件)的傳播與冒泡

 更新時間:2017年01月23日 08:37:24   作者:小龍女先生  
本文主要介紹了Event(事件)的傳播與冒泡。具有很好的參考價值,下面跟著小編一起來看下吧

特性說明和原理圖:

  • 標準瀏覽器和Ie9+瀏覽器都支持事件的冒泡和捕獲,而IE8-瀏覽器只支持冒泡
  • 標準和Ie9+瀏覽器用stopPropagation()或cancelBubble阻止事件傳播,而ie8-用e.cancelBubble屬性來阻冒泡,注意ie9不支持cancelBubble屬性(設(shè)置后不生效),但chrome、safari、opera、firefox都支持cancelBubble屬性。
  • Ie8-用attachEvent為dom元素添加一個事件,但必須在事件名前加上on,此類事件只能在元素的冒泡階段。
  • stopPropagatin()方法用于阻止事件的傳播,如果設(shè)置在捕獲階段,則目標和冒泡階段不會被執(zhí)行;
  • cancelBubble屬性只能阻止冒泡階段,對捕獲和目標階段的事件不能阻止
  • preventDefault()和window.event.returnValue用于標準瀏覽器和ie9+,都可以阻止默認事件。ie8-可以用returnValue,preventDefault()。

示例代碼(ie8-示例不提供)

html代碼

<body class="body" > 
 <div class="log"></div>
 <input type="text" id="inTxt" name="intxt" />
<div class="wrap">
 <div class="cont">
  <button type="button" class="button" id="btn">按鈕</button>
  <select name="stopType" id="stopType">
    <option value="1">StopPropagation</option>
    <option value="2">cancelBubble</option>
  </select>
  <button type="button" class="button" id="btnReject">cont阻止捕獲或冒泡</button>
 </div>
</div>
</body>

層級關(guān)系:body->wrap->cont->button,可以對照上面的原理

Js代碼

$(function(){
    var $log = $('.log'), 
      $wrap = $('.wrap'),
      $cont = $('.cont'),
      $btn = document.getElementById('btn'),
      $stopType = $('#stopType'),
      $body = $('body'),
      $inTxt = $('#inTxt'),
      $btnReject = $('#btnReject');
    var ePhase = ["","捕獲","目標","冒泡"]
    var setBorderColor = function( $dom, color, time,event){
      $dom = $($dom);
      $log.html($log.html() + $dom.attr('class') + '[' + ePhase[event.eventPhase] + ']' + '<br/>')
      var timeIndex = window.setTimeout(function(){   
      $dom.css({
        'borderColor': color,
        'borderWidth': '4px'
      });
      }, time);
    }  
    //捕獲
    $body[0].addEventListener('click',function(event){ 
      $log.html($log.html() + "-------------------<br>");
      setBorderColor($body,'#0866ff ',0,event);
    },true);  
    $wrap[0].addEventListener('click',function(event){
      setBorderColor($wrap,'yellow',2000,event); 
    },true);
    $cont[0].addEventListener('click',function(event){
      event = event || window.event;
      if( $stopType.val() == '1' ){
        event.stopPropagation();
      }else{
        event.cancelBubble = true;
      }
      setBorderColor($cont,'green',1000,event);  
    },true); 
    $btn.addEventListener('click', function(event){ 
      setBorderColor($btn,'red',0,event);
    },true);
    $btnReject[0].addEventListener('click',function(event){ 
      setBorderColor($btnReject,'gray ',0,event);
    },true);
    //冒泡
    $body[0].addEventListener('click',function(event){
      setBorderColor($body,'#0866ff ',0,event);
    },false); 
    $wrap[0].addEventListener('click',function(event){
      setBorderColor($wrap,'yellow',2000,event); 
    },false); 
    $cont[0].addEventListener('click',function(event){
      setBorderColor($cont,'green',1000,event);  
    },false); 
    $btn.addEventListener('click', function(event){ 
      setBorderColor($btn,'red',0,event);
    },false);
    $btnReject[0].addEventListener('click',function(event){ 
      setBorderColor($btnReject,'gray ',0,event);
    },false);
    //阻止默認事件
    $inTxt.keypress(function(event){
      //event.preventDefault(); 
      window.event.returnValue = false;
      $body.append( String.fromCharCode( event.keyCode ));
    });
  });
  1. 實現(xiàn)一個完整的event流的Demo
  2. 在cont的捕獲事件處有阻止事件傳播的代碼
  3. 阻止默認事件只用于驗證

效果圖

應用場景

  • 捕獲階段的事件應用場景較少,一般情況下都應用在目標和冒泡階段。
  • 現(xiàn)階段w3c的標準事件已普遍受支持,如果不兼容ie8-瀏覽器可以廢棄一些兼容性代碼。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • js es6系列教程 - 新的類語法實戰(zhàn)選項卡(詳解)

    js es6系列教程 - 新的類語法實戰(zhàn)選項卡(詳解)

    下面小編就為大家?guī)硪黄猨s es6系列教程 - 新的類語法實戰(zhàn)選項卡(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • redux.js詳解及基本使用

    redux.js詳解及基本使用

    Redux我們可以把它理解成一個狀態(tài)管理器,可以把狀態(tài)(數(shù)據(jù))存在Redux中,以便增、刪、改。這篇文章主要介紹了redux.js詳解及基本使用,需要的朋友可以參考下
    2019-05-05
  • Javascript 判斷Flash是否加載完成的代碼

    Javascript 判斷Flash是否加載完成的代碼

    網(wǎng)站加入flash廣告代碼,利用DIV層來控制進度的狀態(tài),如果加載swf文件到100%的時候就顯示出flash,把AD層隱藏掉,請看下面實現(xiàn)方法。
    2010-04-04
  • 微信小程序背景音樂開發(fā)詳解

    微信小程序背景音樂開發(fā)詳解

    這篇文章主要介紹了微信小程序背景音樂開發(fā)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 微信小程序按鈕巧妙用法

    微信小程序按鈕巧妙用法

    這篇文章主要介紹了微信小程序按鈕巧妙用法,按鈕組件功能比?HTML?中的?button?按鈕豐富,通過?open-type?屬性可以調(diào)用微信提供的各種功能(客服、轉(zhuǎn)發(fā)、獲取用戶授權(quán)、獲取用戶信息等),需要的朋友可以參考下
    2022-12-12
  • JS前端加密算法示例

    JS前端加密算法示例

    這篇文章主要介紹了JS前端加密算法,結(jié)合實例形式分析了crypto-js具體用法與注意事項,需要的朋友可以參考下
    2016-12-12
  • 原生JS實現(xiàn)移動端web輪播圖詳解(結(jié)合Tween算法造輪子)

    原生JS實現(xiàn)移動端web輪播圖詳解(結(jié)合Tween算法造輪子)

    在做移動端開發(fā)的時候,必不可少的是輪播圖,下面這篇文章主要給大家介紹了關(guān)于利用純JS實現(xiàn)移動端web輪播圖的相關(guān)資料,重要的是結(jié)合Tween算法造輪子,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • js實現(xiàn)金山打字通小游戲

    js實現(xiàn)金山打字通小游戲

    這篇文章為大家詳細主要介紹了js實現(xiàn)金山打字通小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • JavaScript遍歷數(shù)組和對象的元素簡單操作示例

    JavaScript遍歷數(shù)組和對象的元素簡單操作示例

    這篇文章主要介紹了JavaScript遍歷數(shù)組和對象的元素簡單操作,結(jié)合實例形式分析了javascript數(shù)組與對象元素遍歷相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-07-07
  • JS上傳圖片前實現(xiàn)圖片預覽效果的方法

    JS上傳圖片前實現(xiàn)圖片預覽效果的方法

    這篇文章主要介紹了JS上傳圖片前實現(xiàn)圖片預覽效果的方法,涉及javascript操作圖片的技巧,需要的朋友可以參考下
    2015-03-03

最新評論