目錄
比較一下vue中的指令修飾符和dom事件中的event物件
事件修飾符
.stop
#.prevent
.once
首頁 web前端 Vue.js 聊聊vue指令中的修飾符,常用事件修飾符總結

聊聊vue指令中的修飾符,常用事件修飾符總結

May 09, 2022 am 11:07 AM
vue vue.js

這篇文章帶大家聊聊vue指令中的修飾符,比較一下vue中的指令修飾符和dom事件中的event對象,介紹一下常用的事件修飾符,希望對大家有所幫助!

聊聊vue指令中的修飾符,常用事件修飾符總結

比較一下vue中的指令修飾符和dom事件中的event物件

在說vue中的修飾符之前,我門用的是dom操作中用過的event物件的常用方法/屬性,event的屬性有哪些呢? 我用過的event的屬性如下:

1、阻止預設事件跳轉(例如a標籤的href的跳躍、還有form表單的提交)(學習影片分享:vue影片教學

event.preventDefault()
登入後複製

2、阻止冒泡事件(例如父級元素綁定事件,子元素也綁定事件,如果不取消冒泡,則點擊子
    元素也會觸發父元素的事件

event.stopPropagation()
登入後複製

3、阻止後續事件觸發,寫在A中,則後續註冊的事件B不會被觸發(例如按鈕綁定兩個事件,
    通過[優先級]的方式註冊了A和B,在運行A的時候不運行B)

event.stopImmediatePropagation()
登入後複製

4、綁定事件的那個元素,例如ul綁定事件,然後點擊li,則currentTarget回傳就是ul

event.currentTarget
登入後複製

5、發生事件的那個元素,例如ul綁定事件,然後點選 li,則target回傳就是點擊的那個li。 

event.target
登入後複製

以上這些都是在dom樹中操作的一些屬性/方法,但使用vue框架就不需要這些dom的操作了,vue中的方法有更好更簡潔的語法修飾符來實現各種功能。

事件修飾符

在事件處理程序中,總是會有一些功能需要修飾,例如阻止某些預設事件跳轉還有提交事件不再重載頁面等等等。為了解決這個問題,vuejs給v-on提供了一些事件修飾符。修飾符是由點開頭的指令後綴名來表示

常用事件修飾符有哪些呢?

  • .stop
  • #.prevent
  • ##.capture
  • .once

.stop

沒加.stop的列印的結果

聊聊vue指令中的修飾符,常用事件修飾符總結

加了.stop的列印的結果

聊聊vue指令中的修飾符,常用事件修飾符總結

原始碼:#

  <template >
  <div @click="fnFather">
    <!-- 阻止事件冒泡 -->
    <button @click.stop="fn">阻止事件冒泡</button>
  </div>
</template>
<script>
export default {
  methods: {
    fn() {
      console.log("按钮点击了");
    },
    fnFather() {
      console.log("父元素 点击了");
    },
  },
};
</script>
<style>
</style>
登入後複製

得出結論


##當你點擊子元素時,父元素也會被觸發,這就是事件冒泡。

使用.stop 來阻止事件冒泡也就是阻止子元素的事件傳播到父元素的身上去。

#.prevent

#沒有加上<span style="font-size: 16px;"></span>.prevent屬性的效果

聊聊vue指令中的修飾符,常用事件修飾符總結

#加了<span style="font-size: 16px;"></span>.prevent #屬性的效果

聊聊vue指令中的修飾符,常用事件修飾符總結

原始程式碼

<template >
  <div>
    <!-- .prevent 阻止默认事件跳转 -->
    <a href="http://taobao.com" @click.prevent="eve">阻止跳转到淘宝</a>
  </div>
</template>
<script>
export default {
  methods: {
    eve() {
      console.log("按钮点击了");
    },
  },
};
</script>
登入後複製

原始程式碼

<template >
  <div @click="hand(&#39;最外层&#39;)">
    <div class="grandfather" @click="hand(&#39;抓到爷爷了&#39;)">
      <div class="father" @click="hand(&#39;抓到爸爸了&#39;)">
        <div class="son" @click="hand(&#39;抓到儿子了&#39;)"></div>
      </div>
    </div>
  </div>
</template>
登入後複製
得出結論

a標籤中的href屬性會跳轉頁面,當你使用a標籤做一些功能時,不需要預設跳轉時,就可以使用.prevent 來阻止預設事件跳轉。其實還有表單的提交事件也使用.prevent 來阻止預設事件跳轉

.capture

.capture

它的意思是事件捕捉雖然不常用但還是要了解的 =下面寫了一個結構四個div的盒子

<template >
  <div @click="hand(&#39;最外层&#39;)">
    <div class="grandfather" @click="hand(&#39;抓到爷爷了&#39;)">
      <div class="father" @click="hand(&#39;抓到爸爸了&#39;)">
        <div class="son" @click="hand(&#39;抓到儿子了&#39;)"></div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  methods: {
    hand(val) {
      console.log(val);
    },
  },
};
</script>
登入後複製
沒有設定

.capture

 它的順序是從內往外執行事件這種是冒泡事件

原始碼聊聊vue指令中的修飾符,常用事件修飾符總結

<template >
  <div @click.capture="hand(&#39;最外层&#39;)">
    <div class="grandfather" @click.capture="hand(&#39;抓到爷爷了&#39;)">
      <div class="father" @click.capture="hand(&#39;抓到爸爸了&#39;)">
        <div class="son" @click.capture="hand(&#39;抓到儿子了&#39;)"></div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  methods: {
    hand(val) {
      console.log(val);
    },
  },
};
</script>
<style>
div {
  margin: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 800px;
  height: 800px;
  background-color: green;
}
.grandfather {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 500px;
  height: 500px;
  background-color: #ccc;
}
.father {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 300px;
  height: 300px;
  background-color: red;
}
.son {
  width: 100px;
  height: 100px;

  background-color: skyblue;
}
</style>
登入後複製

##原始碼

<template >
  <button @click="hand">函数只会执行一次</button>
</template>
<script>
export default {
  methods: {
    hand() {
      console.log("函数只会执行一次,再次点击不会执行");
    },
  },
};
</script>
登入後複製
登入後複製

設定了

.capture聊聊vue指令中的修飾符,常用事件修飾符總結  它就會從外往裡執行 可以給單一設定也可以給多個設定

### ######原始碼#########
<template >
  <button @click.once="hand">函数只会执行一次</button>
</template>
<script>
export default {
  methods: {
    hand() {
      console.log("函数只会执行一次,再次点击不会执行");
    },
  },
};
</script>
登入後複製
登入後複製
######如圖所示:###############

得出结论

冒泡是从里往外冒,捕获是从外往里捕.capture 它是事件捕获 当它存在时,会先从外到里的捕获,剩下的从里到外的冒泡。

.once

.once 含义是点击事件将只会触发一次 没有设置 .once 就是普通的函数正常执行

<template >
  <button @click="hand">函数只会执行一次</button>
</template>
<script>
export default {
  methods: {
    hand() {
      console.log("函数只会执行一次,再次点击不会执行");
    },
  },
};
</script>
登入後複製
登入後複製

聊聊vue指令中的修飾符,常用事件修飾符總結

设置了 .once 就只能执行一次

<template >
  <button @click.once="hand">函数只会执行一次</button>
</template>
<script>
export default {
  methods: {
    hand() {
      console.log("函数只会执行一次,再次点击不会执行");
    },
  },
};
</script>
登入後複製
登入後複製

聊聊vue指令中的修飾符,常用事件修飾符總結

得出结论

.once  就只能执行一次,再次点击就不会执行了

(学习视频分享:web前端开发编程基础视频

以上是聊聊vue指令中的修飾符,常用事件修飾符總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue.js vs.反應:特定於項目的考慮因素 vue.js vs.反應:特定於項目的考慮因素 Apr 09, 2025 am 12:01 AM

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

vue怎麼給按鈕添加函數 vue怎麼給按鈕添加函數 Apr 08, 2025 am 08:51 AM

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

vue.js怎麼引用js文件 vue.js怎麼引用js文件 Apr 07, 2025 pm 11:27 PM

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 &lt;script&gt; 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

vue中的watch怎麼用 vue中的watch怎麼用 Apr 07, 2025 pm 11:36 PM

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

vue返回上一頁的方法 vue返回上一頁的方法 Apr 07, 2025 pm 11:30 PM

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 &lt;router-link to=&quot;/&quot;&gt; 組件window.history.back(),方法選擇取決於場景。

vue多頁面開發是啥意思 vue多頁面開發是啥意思 Apr 07, 2025 pm 11:57 PM

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

怎樣查詢vue的版本 怎樣查詢vue的版本 Apr 07, 2025 pm 11:24 PM

可以通過以下方法查詢 Vue 版本:使用 Vue Devtools 在瀏覽器的控制台中查看“Vue”選項卡。使用 npm 運行“npm list -g vue”命令。在 package.json 文件的“dependencies”對像中查找 Vue 項。對於 Vue CLI 項目,運行“vue --version”命令。檢查 HTML 文件中引用 Vue 文件的 &lt;script&gt; 標籤中的版本信息。

See all articles