問題描述:當在dom上同時綁定單擊事件和雙擊事件時,點擊雙擊事件會觸發兩次單擊事件,這是我們不想看到的,而是應該單擊事件與雙擊事件分開。
分析:單擊事件和雙擊事件區別就在間隔時間,當我們點擊一次時,設置一個延時器,延時一定時間(300ms爲好),在這300ms之內,在此點擊,認定執行的是雙擊事件,如果超過300ms再點擊第二次,執行的是單擊事件。
方案:
單擊事件代碼:
handleNodeClick(data) {
var that = this
// 開啓定時器,300ms的間隔區分單擊和雙擊,解決雙擊時執行兩次單擊事件
clearTimeout(that.time)
that.time = setTimeout(() => {
// 寫單擊事件執行的邏輯代碼
},300)
}
雙擊事件代碼:
// 雙擊事件
dbclickNode(node, data) {
clearTimeout(this.time)
// 觸發dbclick事件,傳入sonmsg值
this.$emit('dbclick', data)
},