【微信小程序】e.currentTarget和e.target


什么是事件

  • 事件是視圖層到邏輯層的通訊方式。
  • 事件可以將用戶的行為反饋到邏輯層進行處理。
  • 事件可以綁定在組件上,當達到觸發事件,就會執行邏輯層中對應的事件處理函數。
  • 事件對象可以攜帶額外信息,如 id, dataset, touches。

事件的使用方式

  • 在組件中綁定一個事件處理函數。

  綁定事件處理函數:

Page({
  tapName(event) {
    console.log(event)
  }
})

  簡單來說就是將事件綁定到組件上面,bindtap和catchtap都屬於點擊事件,綁定了之后點擊組件可以觸發這個函數。。例如:

<view id="tapTest" data-hi="WeChat" bindtap="tapName">Click me!</view>

bindtap和catchtap的區別

  (1) 相同點:首先他們都是作為點擊事件函數,就是點擊時觸發。在這個作用上他們是一樣的,可以不做區分。

  (2) 不同點:他們的不同點主要是bindtap是冒泡的,catchtap是非冒泡的。

小程序中事件分為冒泡事件和非冒泡事件

  冒泡事件:當一個組件上的事件被觸發后,該事件會向父節點傳遞。

  非冒泡事件:當一個組件上的事件被觸發后,該事件不會像父節點傳遞。

  (1) 本文以冒泡事件tap(手指觸摸后馬上離開,也就是點擊事件)為例子來區別bind和catch事件

  (2) bindtap 事件綁定不會阻止冒泡事件向上冒泡

  (3) catchtap 事件綁定可以阻止冒泡事件向上冒泡

小程序中的e.target與e.currentTarget

  e.target是tap點擊事件觸發的對象(也就是點擊的是誰)

  e.currentTarget是事件綁定在哪個元素上(也就是這個事件在哪個組件上)

案例1: 

  案例1,console打印結果,如下圖:

  tap1與tap3使用的是bind關鍵字綁定tap事件,因為tap事件屬於冒泡事件,所以會發生事件冒泡。當點擊middle View,打印如下: 

  因為catch關鍵字,修飾的事件,會阻止向上傳播到outer.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM