在vue中根據(jù)光標的顯示與消失實現(xiàn)下拉列表
重點知識
mousedown事件:mousedown的執(zhí)行順序大于blur事件
HTML代碼
<template> <div> <input ref="search" @focus="showList(true)" v-model="search" @blur="showList(false)"/> <ul v-if="state"> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(1)">1</li> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(2)">2</li> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(3)">3</li> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(4)">4</li> </ul> </div> </template>
通過上面的代碼生成了我們的基本下拉列表,接下來是data數(shù)據(jù)的解析:
data() {
return {
search: '',//搜索框值
state: false,//是否顯示下拉列表
isShowList: false,//判斷是點擊內(nèi)容隱藏光標的,還是點擊空白隱藏光標的
}
},
詳細函數(shù)解析:
//顯示光標和失去光標事件
showList(state) {//state用于判斷是否是得到光標事件還是失去光標事件
if (state) {
this.state = state//顯示下拉列表
} else {
if(this.isShowList){//this.isShowList用于判斷是否是下拉列表里的內(nèi)容點擊的事件
//把this.isShowList賦值為false讓點擊空白區(qū)能再次觸發(fā)失去光標事件
this.isShowList = false
//讓input一直都有光標事件
this.$refs.search.focus()
}else {
this.state = state //隱藏下拉框
}
}
},
handleSearch(data) {//data搜索的數(shù)據(jù)
this.search = data//賦值
this.isShowList = true//這是區(qū)別是否是內(nèi)容區(qū)的點擊事件
}
詳細過程
- 點擊input標簽觸發(fā)showList(true)方法,有它是true直接執(zhí)行 this.state = state//顯示下拉列表
- 點擊下拉框內(nèi)容觸發(fā)handleSearch(data)方法 把 this.isShowList = true 標注這是在下拉框內(nèi)容的點擊事件,將不會隱藏下拉框
- 最后通過blur觸發(fā)showList(false),他將根據(jù)this.isShowList判斷是否隱藏下拉框,當(dāng)this.isShowList是true時,執(zhí)行this.isShowList = false 把this.isShowList回復(fù)原樣,讓點擊空白區(qū)也能隱藏下拉框,
- this.$refs.search.focus()讓input再次獲得光標事件,這將為點擊空白區(qū)能觸發(fā)失去光標事件讓下拉框隱藏起來
參考:http://m.fzitv.net/article/171151.htm
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue+Bootstrap收藏(點贊)功能邏輯與具體實現(xiàn)
這篇文章主要為大家詳細介紹了Vue+Bootstrap收藏(點贊)功能邏輯與具體實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-10-10
vue實現(xiàn)離線地圖+leaflet+高德瓦片的詳細代碼
這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)離線地圖+leaflet+高德瓦片的詳細代碼,Vue Leaflet是一種結(jié)合了Vue框架和Leaflet庫的前端技術(shù),用于展示和操作天地圖,需要的朋友可以參考下2023-10-10
簡單實現(xiàn)Vue的observer和watcher
這篇文章主要教大家如何簡單實現(xiàn)Vue的observer和watcher,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
Vue中使用iframe踩坑問題記錄 iframe+postMessage
這篇文章主要介紹了Vue中使用iframe踩坑問題記錄 iframe+postMessage,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
vue中使用v-if隱藏元素時會出現(xiàn)閃爍問題的解決
這篇文章主要介紹了vue中使用v-if隱藏元素時會出現(xiàn)閃爍問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue全局使用less樣式,組件使用全局樣式文件中定義的變量操作
這篇文章主要介紹了Vue全局使用less樣式,組件使用全局樣式文件中定義的變量操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

