contains 之 點擊元素外位置隱藏元素
api:
contains 檢測一個元素包含在另一個元素之內 詳解:http://www.runoob.com/jquery/misc-contains.html
原理:
監聽click事件,當點擊時判斷點擊位置是否包含在目標元素內,若判斷通過則隱藏
代碼:
// 創建click監聽 mounted () { document.addEventListener('click', this.queryHide) }, // 清除click監聽 beforeDestroy () { document.removeEventListener('click',this.queryHide) }, methods: { queryHide (e) { if ((!this.$refs.queryBox.contains(e.target)) && (!this.$refs.queryDown.contains(e.target))) { /* 關閉元素 */ this.show = false } } }
注意:
1.監聽需要清除,否則控制台會報錯,雖然不影響使用
2.一般判斷需要判斷需要關閉的元素和開啟這個元素的按鈕
3.ref替代了jquery和js的dom選擇,當不適用vue的時候可以直接使用dom選擇器完成以上操作
鑽研不已,轉載請注明出處。。。。。