vue鼠標懸停事件監(jiān)聽實現(xiàn)方法
前言
開發(fā)框架為 vue2.x
情景描述
需求是這樣的:頁面在鼠標懸停(不動)n秒之后,頁面進行相應的事件。
比如在我的需求下,是鼠標懸停15秒之后,頁面上三個數(shù)據(jù)彈窗輪詢展示。
解決方法
我的思路中 涉及到了三個變量
data(){
return {
polling: null,
timeCount: 0,
judgeTimer: null,
}
}
polling: 是 輪詢的時候的一個計時器
timeCount: 是 判斷鼠標是否移動的一個控制變量
judgeTimer:是 判斷鼠標是否移動的一個計時器
只要鼠標進行了移動,那么 timeCount就會發(fā)生變化。
若是15秒內(nèi) timeCount沒有發(fā)生變化,那么就說明此刻鼠標處于懸停狀態(tài),就可以進行運行懸停的事件
那么 對于鼠標移動 我們可以給元素綁定 mousemove事件
mouseMove() {
clearTimeout(this.judgeTimer);
clearInterval(this.polling);
this.timer = null;
this.polling = null;
this.timeCount = ++this.timeCount % 100;
},
那么對于 timeCount 怎么知道是多久未發(fā)生變化呢?
我們可以在watch下對其進行監(jiān)聽
watch: {
timeCount: {
handler() {
this.judgeTimer = null;
this.polling = null;
clearTimeout(this.judgeTimer);
clearInterval(this.polling);
this.judgeTimer = setTimeout(() => {
this.play();
}, delay);
},
},
},
至于我嘛的 play 函數(shù) 就是我們的具體業(yè)務部分了,在play函數(shù)內(nèi)編寫輪詢的業(yè)務,使用 polling 作為計時器。
play() {
clearInterval(this.polling);
this.polling = setInterval(() => {
// 具體業(yè)務代碼
}, delay);
},
總結(jié)
到此這篇關(guān)于vue鼠標懸停事件監(jiān)聽的文章就介紹到這了,更多相關(guān)vue鼠標懸停事件監(jiān)聽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue?props傳入function時的this指向問題解讀
這篇文章主要介紹了Vue?props傳入function時的this指向問題解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
Vue瀏覽器鏈接與接口參數(shù)實現(xiàn)加密過程詳解
這篇文章主要介紹了Vue瀏覽器鏈接與接口參數(shù)實現(xiàn)加密過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-12-12
vue created鉤子函數(shù)與mounted鉤子函數(shù)的用法區(qū)別
這篇文章主要介紹了vue created鉤子函數(shù)與mounted鉤子函數(shù)的用法區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

