vue 解除鼠標(biāo)的監(jiān)聽事件的方法
描述:在移動端中,我們的首頁tab會緩存一些點(diǎn)擊事件,比如在機(jī)構(gòu)頁面點(diǎn)開了下拉框==》在切換到賽事頁面==》在切換回機(jī)構(gòu)頁面發(fā)現(xiàn)下拉款已經(jīng)緩存了,是下拉的狀態(tài)
1.

2.

3.

解決:每次滑動到別的頁面的時候就需要解除綁定的點(diǎn)擊事件
做法:
1- 首先給父盒子添加 指令:
v-click-outside="hideBox"

2- script標(biāo)簽中 自定義指令
// 自定義指令函數(shù)
const clickOutside = {
// 初始化指令
bind (el, binding, vnode) {
function clickHandler (e) {
// 這里判斷點(diǎn)擊的元素是否是本身,是本身,則返回
if (el.contains(e.target)) {
return false;
}
// 判斷指令中是否綁定了函數(shù)
if (binding.expression) {
// 如果綁定了函數(shù) 則調(diào)用那個函數(shù),此處binding.value就是handleClose方法
binding.value(e);
}
}
// 給當(dāng)前元素綁定個私有變量,方便在unbind中可以解除事件監(jiān)聽
el.__vueClickOutside__ = clickHandler;
document.addEventListener('click', clickHandler);
},
update () { },
unbind (el, binding) {
// 解除事件監(jiān)聽
document.removeEventListener('click', el.__vueClickOutside__);
delete el.__vueClickOutside__;
},
};
3-在export default 中注冊自定義指令
// 注冊自定義指令
directives: { clickOutside },
4- 最后寫上需要恢復(fù)下拉的參數(shù)
hideBox () {
this.isSelect = false
this.selectStatus = false
},
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3中Element-Plus分頁(Pagination)組件的使用
Element-Plus分頁(Pagination)組件在開發(fā)過程中數(shù)據(jù)展示會經(jīng)常使用到,同時分頁功能也會添加到頁面中,下面我們就來學(xué)習(xí)一下它的具體使用,需要的可以參考一下2023-11-11
vue+express 構(gòu)建后臺管理系統(tǒng)的示例代碼
這篇文章主要介紹了vue+express 構(gòu)建后臺管理系統(tǒng)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
vue使用echarts詞云圖的實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于vue使用echarts詞云圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
vue.js watch經(jīng)常失效的場景與解決方案
這篇文章主要給大家介紹了關(guān)于vue.js watch經(jīng)常失效的場景與解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

