1. 程式人生 > 其它 >事件源問題currentTarget

事件源問題currentTarget

技術標籤:js基礎問題js

**問題型別:**事件冒泡的問題
**問題情景:**在一個元素中獲得他的事件源,並且獲得該事件源的屬性,結果該屬性顯示未定義

  1. 首先我們先來看一下事件冒泡的問題

    事件冒泡指的是,在父子元素中,都含有同類型的事件,此時,事件的響應順序是從子元素開始發生的
    

    如:我們只想實現觸發子元素時,響應某種事件
    流程:1.子元素被單擊,事件執行完畢
    2.檢視該子元素的父元素是否有單擊事件,如果有則執行,並且依次向上

<!doctypt>
<html>
	<head>
		<meta charset="utf-8"
> <title>事件冒泡和事件捕獲</title> </head> <body> <div id="father"> 父元素 <div id="son"> 子元素 <div id="son-son"> 子元素的子元素 </div> </div> </div> </body> <script type="text/javascript"
> let father = document.getElementById("father") let son = document.getElementById("son") let son_son = document.getElementById("son-son") father.onclick = function(e){ console.log("父元素") } son.onclick = function(e){ console.log("子元素"
) } son_son.onclick = function(e){ console.log("子元素的子元素") } </script> </html>

當我們單擊“子元素的子元素”時,控制檯的執行順序時:

子元素的子元素
子元素
父元素

解決方案:為該事件新增

e.stopPropagation()

**【小結】**這個問題比較簡單,上面只是複習一下,接下來的問題是我今天編寫案例時遇到的問題

案例需求:單擊事件,獲得事件源
我的處理方法是:event.target
但是,問題是在我單擊到含有子元素的區域時,他的事件源成為了該子元素節點,因此有時候,所需要的屬性是未定義,從而導致報錯

解決方案:在列印event時,出現一個currentTarget節點,該節點和target節點用法相同,不過前者指的是繫結響應事件的父節點,後者指定是,滑鼠單擊的區域節點(因此該target是跟隨滑鼠來決定的)資訊