js模擬dom失去焦點,阻止事件冒泡
阿新 • • 發佈:2021-08-17
需求:
點選div,將mouseListening改變為:true
點選除div外其他區域,將mouseListening改變為:false
dom
<div class="select-popup_panel" ></div>
js
export default { data() { return { mouseListening: false }; }, mounted() { this.addListener(); }, destroyed() { this.removeListener(); }, methods: { addListener() { let self = this; let dom= document.getElementsByClassName('select-popup_panel')[0]; dom.addEventListener('click',function(e){ self.$set(self,'mouseListening',true); e.stopPropagation(); // 阻止事件冒泡
//js阻止事件冒泡 //e.cancelBubble = true; //e.stopPropagation(); //js阻止連結預設行為,沒有停止冒泡 //e.preventDefault(); //return false;
}); document.addEventListener('click',()=>{self.$set(self,'mouseListening',false)}); }, removeListener() { this.$set(this,'mouseListening',false); let dom = document.getElementsByClassName('select-popup_panel')[0]; dom.removeEventListener("click", ()=>{}); document.removeEventListener("click", ()=>{}); } } }