小程序中事件對象的屬性與方法

在小程序中,事件處理函數的參數為事件對象(通常命名為?e),包含了事件相關的詳細信息(如事件類型、觸發元素、傳遞的數據等)。事件對象的屬性和方法因事件類型(如點擊、輸入、觸摸等)略有差異,但核心屬性具有通用性。

一、核心屬性

1.?type

類型:String

說明:表示事件的類型(如 "tap"、"input"、"longpress" 等)。

示例:

// 點擊事件的處理函數
handleTap(e) {console.log(e.type); // 輸出 "tap"
}

2.?target

類型:Object

說明:觸發事件的「源頭元素」(可能是子組件),包含該元素的標簽名、id、class等信息。

屬性結構:

id:元素的 id 屬性值

dataset:元素通過?data-*?定義的自定義數據(僅當前元素的)

tagName:元素的標簽名(如 "view"、"button")

classList:元素的 class 列表

示例:

<view bind:tap="handleTap"><button id="btn" data-type="submit">點擊</button>
</view>handleTap(e) {console.log(e.target.id); // 輸出 "btn"(源頭是button)console.log(e.target.dataset.type); // 輸出 "submit"
}

3.?currentTarget

類型:Object

說明:綁定事件的當前元素(與?target?可能不同,若事件冒泡則可能為父元素),屬性結構同?target

示例:

<view id="parent" bind:tap="handleTap" data-parent="true"><button id="child">點擊</button>
</view>handleTap(e) {console.log(e.currentTarget.id); // 輸出 "parent"(事件綁定在view上)console.log(e.currentTarget.dataset.parent); // 輸出 trueconsole.log(e.target.id); // 輸出 "child"(觸發事件的源頭是button)
}

4.?detail

類型:Object

說明:事件的詳細信息,內容因事件類型而異,是最常用的屬性之一。

常見事件的?detail?內容:

tap/longpress(點擊/長按):包含觸摸點坐標

{ x: 150, y: 300 } // 相對于頁面的坐標

input(輸入框輸入):包含輸入值

{ value: "用戶輸入的內容", cursor: 5 } // cursor是光標位置

change(表單元素值變化)

復選框(checkbox):{ value: ["選中的值1", "選中的值2"] }

單選框(radio):{ value: "選中的值" }

滑塊(slider):{ value: 50 }(當前值)

submit(表單提交):包含表單所有字段的鍵值對

  • { value: { username: "張三", age: "18" } }

示例(input事件):

<input bind:input="handleInput" />handleInput(e) {console.log(e.detail.value); // 實時輸出用戶輸入的內容
}

5.?dataset

類型:Object

說明:綁定事件的元素(currentTarget)通過?data-*?定義的自定義數據集合(簡化獲取方式,等價于?e.currentTarget.dataset)。

示例:

<button bind:tap="handleClick" data-id="100" data-user-name="張三">點擊</button>handleClick(e) {console.log(e.dataset.id); // 輸出 100(注意:data-id 對應 dataset.id)console.log(e.dataset.userName); // 輸出 "張三"(注意:data-user-name 會轉為駝峰式 userName)
}

6.?mark

類型:Object

說明:通過?mark:?前綴定義的自定義數據(與?dataset?類似,但支持事件冒泡傳遞,即父元素可獲取子元素的 mark 數據)。

示例:

<view bind:tap="handleTap" mark:parent="view"><button mark:child="btn">點擊</button>
</view>handleTap(e) {console.log(e.mark.parent); // 輸出 "view"(當前元素的mark)console.log(e.mark.child); // 輸出 "btn"(子元素的mark,因冒泡被傳遞)
}

7.?timestamp

類型:Number

說明:事件觸發的時間戳(毫秒級,從1970年開始計算)。

示例:

handleTap(e) {console.log(e.timestamp); // 輸出 1620000000000(事件觸發的時間)
}

8.?touches?與?changedTouches

類型:Array<Object>

說明:僅在觸摸事件(如?touchstarttouchmovetouchend)中存在,包含觸摸點的坐標信息。

touches:當前屏幕上所有觸摸點的列表

changedTouches:當前事件中狀態發生變化的觸摸點列表(如觸摸開始、移動、結束)

觸摸點對象的屬性:

clientX/clientY:相對于頁面可視區域的坐標(不含導航欄、狀態欄)

pageX/pageY:相對于頁面的坐標(含滾動距離)

screenX/screenY:相對于屏幕的坐標

示例:

<view bind:touchmove="handleTouchMove">滑動</view>handleTouchMove(e) {console.log(e.changedTouches[0].clientX); // 輸出當前觸摸點的X坐標
}

二、常用方法

小程序事件對象的方法較少,主要用于事件控制,常見的有:

1.?stopPropagation()

說明:阻止事件冒泡(等價于使用?catch:事件類型?綁定事件)。

示例:

<view bind:tap="parentTap"><button bind:tap="childTap">點擊</button>
</view>childTap(e) {e.stopPropagation(); // 阻止事件冒泡到父元素console.log("子元素事件");
}parentTap() {console.log("父元素事件"); // 不會執行,因事件被阻止冒泡
}

2.?preventDefault()

說明:阻止事件的默認行為(部分事件有默認行為,如表單提交的跳轉)。

示例:

<form bind:submit="handleSubmit"><button form-type="submit">提交</button>
</form>handleSubmit(e) {e.preventDefault(); // 阻止表單默認提交行為(如頁面刷新)console.log("自定義提交邏輯");
}

三、總結

事件對象的核心屬性中,detail(獲取事件詳情)、dataset(獲取自定義數據)、target/currentTarget(獲取元素信息)是開發中最常用的。不同事件類型的?detail?內容差異較大,需根據具體場景查閱對應事件的文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916943.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用寶塔“PostgreSQL管理器”安裝的PostgreSQL,如何設置遠程連接?

安裝 PostgreSQL 使用寶塔“PostgreSQL管理器”安裝PostgreSQL&#xff0c;版本可以根據自己的需求來選擇&#xff0c;我這里使用的是16.1 創建數據庫 根據下圖所示步驟創建數據庫&#xff0c;其中 “訪問權限”一定要選擇“所有人”啟用遠程連接設置允許所有 IP 連接 listen_a…

論文:M矩陣

M矩陣是線性代數中的一個概念&#xff0c;它是一種特殊類型的矩陣&#xff0c;具有以下性質&#xff1a;非負的非對角線元素&#xff1a;矩陣的所有非對角線元素都是非負的&#xff0c;即對于矩陣MMM中的任意元素mijm_{ij}mij?&#xff0c;當i≠ji\neq jij時&#xff0c;有m…

跳躍表可視化深度解析:動態演示數據結構核心原理

跳躍表可視化深度解析&#xff1a;動態演示數據結構核心原理 一、跳躍表基礎概念與核心優勢 跳躍表&#xff08;SkipList&#xff09;是一種基于多層索引鏈表的數據結構&#xff0c;通過概率平衡實現高效的插入、刪除和查找操作。其核心優勢體現在&#xff1a; ?時間復雜度優…

《Sentinel服務保護實戰:控制臺部署與SpringCloud集成指南》

sentinel 介紹 Sentinel是阿里巴巴開源的一款服務保護框架&#xff0c;目前已經加入SpringCloudAlibaba中。官方網站&#xff1a; home | Sentinel Sentinel 的使用可以分為兩個部分: 核心庫&#xff08;Jar包&#xff09;&#xff1a;不依賴任何框架/庫&#xff0c;能夠運行…

IBM Watsonx BI:AI賦能的下一代商業智能平臺

產品概覽 IBM Watsonx BI 是基于 watsonx 企業級 AI 與數據平臺 構建的智能分析解決方案&#xff0c;專為現代化企業打造。它深度融合人工智能技術&#xff0c;突破傳統 BI 工具的限制&#xff0c;通過自動化數據洞察、自然語言交互和預測分析&#xff0c;幫助企業在復雜數據環…

Python實現GO鵝優化算法優化GBRT漸進梯度回歸樹回歸模型項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔&#xff09;&#xff0c;如需數據代碼文檔可以直接到文章最后關注獲取 或者私信獲取。 1.項目背景 隨著大數據和人工智能技術的快速發展&#xff0c;回歸預測在金融、氣象、能源等多個領域中扮演著至關…

深度學習計算(深度學習-李沐-學習筆記)

層和塊 單一輸出的線性模型&#xff1a;單個神經網絡 &#xff08;1&#xff09;接受一些輸入&#xff1b; &#xff08;2&#xff09;生成相應的標量輸出&#xff1b; &#xff08;3&#xff09;具有一組相關 參數&#xff08;parameters&#xff09;&#xff0c;更新這些參數…

leetcode熱題——搜索二維矩陣Ⅱ

目錄 搜索二維矩陣Ⅱ 題目描述 題解 解法一&#xff1a;暴力搜索 C 代碼實現 復雜度分析 解法二&#xff1a;二分查找 C 代碼實現 復雜度分析 解法三&#xff1a;Z字形查找 算法核心思想 算法步驟詳解 C 代碼實現 復雜度分析 搜索二維矩陣Ⅱ 題目描述 編寫一個…

牛客 - 數組中的逆序對

描述 在數組中的兩個數字&#xff0c;如果前面一個數字大于后面的數字&#xff0c;則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。并將P對1000000007取模的結果輸出。 即輸出P mod 1000000007 數據范圍&#xff1a; 對于 50% 的數據, size≤104 s…

Linux 日志管理與時鐘同步詳解

Linux 日志管理與時鐘同步詳解 一、日志管理 1. 日志服務概述 Linux 系統中主要有兩種日志服務&#xff0c;分別負責臨時和永久日志的管理&#xff1a; systemd-journald&#xff1a;存儲臨時日志&#xff0c;服務器重啟后日志會丟失&#xff0c;無需手動配置rsyslog&#xff1…

個人如何做股指期貨?

本文主要介紹個人如何做股指期貨&#xff1f;個人參與股指期貨交易需要遵循一定的流程和規則&#xff0c;同時需充分了解其高風險、高杠桿的特點&#xff0c;并做好風險管理。個人如何做股指期貨&#xff1f;一、了解股指期貨基礎股指期貨是以股票價格指數為標的物的金融期貨合…

設計模式-單例模式 Java

模式概述 單例模式&#xff08;Singleton Pattern&#xff09;是設計模式中最基礎但應用最廣泛的創建型模式之一&#xff0c;確保一個類僅有一個實例&#xff0c;并提供一個全局訪問點。這種模式在需要全局唯一對象的場景中至關重要&#xff0c;如配置管理、線程池、數據庫連接…

RFID 系統行業前沿洞察:技術躍遷與生態重構

在物聯網與人工智能深度融合的時代&#xff0c;RFID&#xff08;射頻識別&#xff09;系統正經歷從 “單品識別工具” 到 “智能決策中樞” 的范式轉變。這一技術憑借其非接觸式數據采集、環境適應性強、全生命周期追溯等特性&#xff0c;在醫療、制造、農業、環保等領域引發連…

實現implements InitializingBean, DisposableBean 有什么用

在 Spring 框架中&#xff0c;實現 InitializingBean 和 DisposableBean 接口用于管理 Bean 的生命周期回調&#xff0c;分別控制 Bean 的初始化后和銷毀前行為。具體作用如下&#xff1a;1. InitializingBean 接口public interface InitializingBean {void afterPropertiesSet…

GitLab 18.2 發布幾十項與 DevSecOps 有關的功能,可升級體驗【一】

沿襲我們的月度發布傳統&#xff0c;極狐GitLab 發布了 18.2 版本&#xff0c;該版本帶來了議題和任務的自定義工作流狀態、新的合并請求主頁、新的群組概覽合規儀表盤、下載安全報告的 PDF 導出文件、中心化的安全策略管理&#xff08;Beta&#xff09;等幾十個重點功能的改進…

如何快速把Clickhouse數據同步到Mysql

直接使用Clickhouse官方支持的Mysql引擎表的方式&#xff01; 一、首先創建Mysql引擎表&#xff1a; CREATE TABLE saas_analysis.t_page_view_new_for_write (id Int64,shop_id Nullable(Int64),session_id Nullable(String),client_id Nullable(String),one_id Nullable(Str…

Kafka 重復消費與 API 冪等消費解決方案

Kafka 是一個高性能的分布式消息系統&#xff0c;但消費者重啟、偏移量&#xff08;offset&#xff09;未正確提交或網絡問題可能導致重復消費。API 冪等性設計則用于防止重復操作帶來的副作用。本文從 Kafka 重復消費和 API 冪等性兩個方面提供解決方案&#xff0c;重點深入探…

win11推遲更新

1、按住WINR2、輸入以下命令&#xff1a;reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v FlightSettingsMaxPauseDays /t reg_dword /d 10000 /f3、點擊確定4、打開搜索框5、在搜索框里邊輸入更新&#xff0c;選擇檢查更新6、在暫停…

【uniapp】---- 使用 uniapp 實現視頻和圖片上傳且都可以預覽展示

1. 前言 接手得 uniapp 開發的微信小程序項目,新的開發需求是需要同時上傳圖片和視頻,但是之前的上傳都沒有進行封裝,都是每個頁面需要的時候單獨實現,現在新的需求,有多個地方都需要上傳圖片、視頻或語音等,這樣就需要封裝一個組件,然后發現部分地方使用了 uni-file-p…

(nice!!!) (LeetCode 每日一題) 2411. 按位或最大的最小子數組長度(位運算+滑動窗口)

2411. 按位或最大的最小子數組長度 思路&#xff1a;位運算滑動窗口&#xff0c;時間復雜度0(n*32)。 **遍歷每一個元素nums[i]&#xff0c;然后看能否改變它前面的元素nums[j]&#xff08; j<i &#xff09;&#xff0c; 當(nums[j]|nums[i])nums[j]時&#xff0c;說明當前…