日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js之事件冒泡和事件捕获

發布時間:2025/6/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js之事件冒泡和事件捕获 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

事件冒泡(的過程):事件從發生的目標(event.srcElement||event.target)開始,沿著文檔逐層向上冒泡,到document為止。
事件捕獲(的過程):則是從document開始,沿著文檔樹向下,直到事件目標為止。

關鍵一句:在IE瀏覽器中,只發生事件冒泡的過程;在W3C(或支持事件捕獲的)瀏覽器中,先發生捕獲的過程,再發生冒泡的過程。

想要添加一個由捕獲過程觸發的事件,只能這樣了:
addEventListener('click',functionname,true);//該方法在IE下報錯(對象不支持此屬性或方法)

注:將第三個參數設置為true,表明該事件是為捕獲過程設置的。如果第三個參數為false,則等同onclick =functionname;

[html]?view plaincopy
  • <script?type="text/javascript">??
  • function?$(id){??
  • ????return?document.getElementById(id);??
  • }??
  • function?altin(){??
  • ????alert("in");??
  • }??
  • function?altmiddle(){??
  • ????alert("middle");??
  • }??
  • function?altout(){??
  • ????alert("out")??
  • }??
  • window.onload=function()?{??
  • ????$('o').onclick?=?altout;??
  • ????//$('m').onclick?=?altmiddle;??
  • ????$('m').addEventListener('click',altmiddle,true);??
  • ????$('i').onclick?=?altin;??
  • }??
  • </script>??
  • </head>??
  • ??
  • <body>??
  • <div?id="o"?style="width:400px;height:400px;border:1px?solid?#CCCCCC;">??
  • ????<div?id="m"?style="width:200px;height:200px;border:1px?solid?#CCCCCC;">??
  • ????????<div?id="i"?style="width:100px;height:100px;border:1px?solid?#CCCCCC;">??
  • ????????</div>??
  • ????</div>??
  • </div>??
  • </body>??
  • </html>??
  • 以上代碼執行效果如下:

    1、$('m').onclick = altmiddle;

    a)當點擊#i時,顯示順序為in,middle,out

    b)當點擊#m時,顯示順序為middle,out

    c)當點擊#o時,顯示順序為out

    2、$('m').addEventListener('click',altmiddle,true);

    a)當點擊#i時,顯示順序為middle,in,out

    b)當點擊#m時,顯示順序為middle,out

    c)當點擊#o時,顯示順序為out

    3、$('m').addEventListener('click',altmiddle,false);

    a)當點擊#i時,顯示順序為in,middle,out

    b)當點擊#m時,顯示順序為middle,out

    c)當點擊#o時,顯示順序為out

    ?

    把事件捕獲和冒泡的過程統稱為事件的傳播
    事件的傳播是可以阻止的:
    ??在W3C中,使用stopPropagation()方法
    ??在IE下設置cancelBubble = true;

    在捕獲的過程中stopPropagation()后,后面的冒泡過程也不會發生了~

    阻止事件的默認行為,例如click <a>后的跳轉~
    ??在W3C中,使用preventDefault()方法;
    ??在IE下設置window.event.returnValue = false;

    注: 不是所有的事件都能冒泡,例如:blur、focus、load、unload,(這個是從別人的文章里摘過來的,我沒測試)。

    總結

    以上是生活随笔為你收集整理的js之事件冒泡和事件捕获的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。