W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
若要在組件中綁定一個事件處理函數(shù),如 onTap
,則需要在該頁面的 .js 文件中的 Page
里定義onTap
對應(yīng)的事件處理函數(shù)。
<view id="tapTest" data-hi="Alipay" onTap="tapName">
<view id="tapTestInner" data-hi="AlipayInner">
Click me!
</view>
</view>
在相應(yīng)的 Page
中定義相應(yīng)的事件處理函數(shù) tapName
,參數(shù)為事件對象 event。
Page({
tapName(event) {
console.log(event);
},
});
控制臺輸出 event 信息如下所示:
{
"type": "tap",
"timeStamp": 1550561469952,
"target": {
"id": "tapTestInner",
"dataset": {
"hi": "Alipay"
},
"targetDataset": {
"hi": "AlipayInner"
}
},
"currentTarget": {
"id": "tapTest",
"dataset": {
"hi": "Alipay"
}
}
}
使用組件(基礎(chǔ)組件、擴展組件和自定義組件)時,組件里有哪些可用的事件取決于組件本身是否支持,支持的事件會在具體組件的文檔里明確列出。
事件分為冒泡事件和非冒泡事件:
on
為前綴,當(dāng)組件上的事件被觸發(fā),該事件會向父節(jié)點傳遞。catch
為前綴,當(dāng)組件上的事件被觸發(fā),該事件不會向父節(jié)點傳遞。事件綁定的寫法同組件的屬性,以 key、value 的形式。
on
或 catch
開頭,然后跟上事件的類型,如 onTap
、catchTap
。<view id="outter" onTap="handleTap1">
view1
<view id="middle" catchTap="handleTap2">
view2
<view id="inner" onTap="handleTap3">
view3
</view>
</view>
</view>
上面代碼中,點擊 view3 會先后觸發(fā) handleTap3 和 handleTap2(因為 tap 事件會冒泡到 view2,而 view2 阻止了 tap 事件冒泡,不再向父節(jié)點傳遞),點擊 view2 會觸發(fā) handleTap2,點擊 view1 會觸發(fā) handleTap1。
所有會發(fā)生冒泡的事件:
類型 | 觸發(fā)條件 |
---|---|
touchStart | 觸摸動作開始 |
touchMove | 觸摸后移動 |
touchEnd | 觸摸動作結(jié)束 |
touchCancel | 觸摸動作被打斷,如來電提醒,彈窗 |
tap | 觸摸后馬上離開 |
longTap | 觸摸后,超過500ms再離開 |
A:推薦使用關(guān)鍵字為 catch 前綴的非冒泡事件來阻止事件冒泡,請參見上文非冒泡事件。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: