1. 程式人生 > >踩坑記錄之vue點選事件

踩坑記錄之vue點選事件

這周遇到了一個小問題,這裡簡單的總結一下。避免遇到同樣的問題。

問題:簡單來說就是,點選(父元素)的時候觸發事件,而點選(子元素)的時候會觸發(父元素)的事件。

itemClick方法

1  itemClick(e) {
2       let $form = e.currentTarget.querySelector("form");
3       let formStyle = $form.style.display;
4       $form.style.display = formStyle == "none" ? "block" : "none";
5  }

渲染出來的效果:

 

 當我點選上圖示記的範圍時,下方的form表單將會隱藏。如下圖:

但當我更改form表單時觸發點選事件時,同樣也會觸發itemClick方法,所以下方的form表單將會隱藏掉(並不是我想要的)。

解決方法獲取事件觸發的實際目標

獲取到了e.target,然後對e.target的特徵(class)進行了判斷,判斷如果不是我需要觸發事件就不進行事件觸發。程式碼如下:

1  itemClick(e) {
2       //如果點選的dom不是“anima-title“
3       if (e.target.classList[0] !== "anima-title") {
4 return; 5 } 6 let $form = e.currentTarget.querySelector("form"); 7 let formStyle = $form.style.display; 8 $form.style.display = formStyle == "none" ? "block" : "none"; 9 }

最終達到了我想要的效果。。。