小結event.target與this

来源:https://www.cnblogs.com/wyl-1113/archive/2022/08/08/16501331.html
-Advertisement-
Play Games

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .box1 { width: 200px; height: 200px; background-color: bl ...


<!DOCTYPE html> <html>
<head>     <meta charset="UTF-8">     <title></title>     <style type="text/css">         .box1 {             width: 200px;             height: 200px;             background-color: black;         }
        .box2 {             width: 100px;             height: 100px;             background-color: red;         }
        .box3 {             width: 50px;             height: 50px;             background-color: blue;         }     </style>     <script type="text/javascript">          //案例中點擊box3時:分別會出現以下情況
        // 使用target會彈出三次box3         // 使用this會彈出box3 box2 box1(冒泡)         window.onload = function () {             var box1 = document.getElementsByClassName("box1")[0];             var box2 = document.getElementsByClassName("box2")[0];             var box3 = document.getElementsByClassName("box3")[0];             box1.onclick = function (event) {                 event = event || window.event;  //估計是相容性寫法                 alert(event.target.className);  //event.target指向的是被觸發事件(被點擊)的對象                 // alert(this.className);   //this指向的是事件綁定的對象             }             box2.onclick = function (event) {                 event = event || window.event;                 alert(event.target.className);                 // alert(this.className);             }             box3.onclick = function (event) {                 event = event || window.event;                 alert(event.target.className);                 // alert(this.className);             }         }
        // 運行這個DEMO,在事件冒泡的背景下,點擊box3,event.target.className為box3,之後冒泡的事件彈出的信息也為box3;         // 這是因為event.target指向的是被觸發事件(被點擊)的對象(box3),僅通過box3觸發了一次事件(點擊),所以只彈出一次box3;         // 而this.name則依次彈出的為box3,box3,box1,這是因為this指向的是事件綁定的對象,事件冒泡中連續觸發了三次事件,這三次事件綁定的對象都不同。         // 簡單的說就是,你點擊了box3,那麼e.target就是box3;並且由於你點擊了box3,通過點擊box3冒泡觸發了box1,box2,         // 在box1和box2的事件中,e.target也是box3。但是this是誰,就和由誰觸發了事件無關了。比如,無論是box2,還是box3觸發了box1的事件,還是box1的事件根本沒有被觸發,box1的事件的this永遠都是box1,忠心耿耿

        // ========================總結==========================         // 1.this是Javascript語言的一個關鍵字。
        // 2.this代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。
        // 3.event 對象代表事件的狀態,比如事件在其中發生的元素、鍵盤按鍵的狀態、滑鼠的位置、滑鼠按鈕的狀態。
        // 4.this和event.target的區別:
        // js中事件是會冒泡的,所以this是可以變化的,但event.target不會變化(在事件觸發時,只傳遞當前event對象的引用),它永遠是直接接受事件的目標DOM元素;
        // 另外,this和event.target都是dom對象,如果要使用jquey中的方法可以將他們轉換為jquery對象:$(this)和$(event.target);
    </script> </head>
<body>     <div class="box1">         <div class="box2">             <div class="box3">
            </div>         </div>     </div> </body>
</html>
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 更多技術交流、求職機會、試用福利,歡迎關註位元組跳動數據平臺微信公眾號,回覆【1】進入官方交流群 序言 埋點數據作為推薦、搜索、產品優化的基石,其數據質量的重要性不言而喻,而要保障埋點數據的質量,埋點驗證則首當其衝。工欲善其事必先利其器,要做好埋點驗證會面臨很多技術挑戰:易用性、準確性、實時性、穩定性 ...
  • 一、數字營銷是數字化轉型排頭兵 《⼗四五數字經濟發展規劃》中強調,要⼤⼒推進數字化轉型,形成數據驅動的智能決策能⼒,提升企業整體運營效率。 要做好數字化轉型,企業可從產、研、供、銷、⽤等多個環節入手,而 “銷” 恰好是第一關鍵要素,企業轉型往往從營銷場景入手,因此我們說數字化營銷是企業數字化轉型的排 ...
  • vivo 互聯網伺服器團隊 - Wang Zhi 一、業務背景 從技術的角度來說,技術方案的選型都是受限於實際的業務場景,都以解決實際業務場景為目標。 在我們的實際業務場景中,需要以游戲的維度收集和上報行為數據,考慮數據的量級,執行盡最大努力交付且允許數據的部分丟棄。 數據上報支持游戲的維度的批量上 ...
  • MySQL源碼解析之執行計劃 MySQL執行計劃介紹 MySQL執行計劃代碼概覽 MySQL執行計劃總結 一、MySQL執行計劃介紹 在MySQL中,執行計劃的實現是基於JOIN和QEP_TAB這兩個對象。其中JOIN類表示一個查詢語句塊的優化和執行,每個select查詢語句(即Query_bloc ...
  • 1.ETCD概述 1.1 ETCD概述 etcd是一個高可用的分散式的鍵值對存儲系統,常用做配置共用和服務發現。由CoreOS公司發起的一個開源項目,受到ZooKeeper與doozer啟發而催生的項目,名稱etcd源自兩個想法,即Linux的**/etc文件夾和d分散式系統。/etc**文件夾是用 ...
  • 首先測試電腦的win鍵是否已經失靈:調出電腦軟鍵盤(具體方式可以自行百度),按下win鍵看電腦是否有反應,多試幾次。 在確定不是電腦鍵盤失靈的前提下,對win鍵進行恢復方法如下: 方法一:長按Fn鍵,再按下win鍵。 方法二:(1)打開任務管理器(在任務欄右鍵滑鼠)。 (2)找到“桌面視窗管理器”, ...
  • 前言: 在iOS中,使用引用計數來管理OC對象記憶體 一個新創建的OC對象引用計數預設是1,當引用計數減為0,OC對象就會銷毀,釋放其占用的記憶體空間。 調用retain會讓OC對象的引用計數+1,調用release會讓OC對象的引用計數-1。 記憶體管理的經驗總結 當調用alloc、new、copy、m ...
  • HMS Core分析服務智能運營6.5.1版本上線,三大“更”新,助力開發者提升運營體驗。 1、活動效果更前置:支持受眾預估,提前判斷活動效果; 2、活動流程更規範:新增活動審核功能,規範運營節奏及活動內容; 3、活動創建更便捷:支持同步活動文案數據,一鍵帶入歷史文案;流程畫布增加滑鼠懸浮詳情展示, ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...