Vue鼠標(biāo)點(diǎn)擊事件和鍵盤事件舉例詳解
Vue中的鼠標(biāo)點(diǎn)擊事件修飾符:
- 1.prevent:阻止默認(rèn)事件(常用);
- 2. stop:阻止事件冒泡(常用);
- 3.once:事件只觸發(fā)一次(常用);
- 4.capture:使用事件的捕獲模式;
- 5.self:只有event.target是當(dāng)前操作的元素時才觸發(fā)事件;
- 6.passive:事件的默認(rèn)行為立即執(zhí)行,無需等待事件回調(diào)執(zhí)行完畢;
vue的@click.prevent
@click.prevent
是 Vue 中的一個事件修飾符,用于阻止瀏覽器默認(rèn)行為和事件冒泡。
在 Vue 組件中,當(dāng)你使用 @click.prevent
修飾符時,Vue 會在觸發(fā) click 事件時調(diào)用事件處理程序,并且會使用 event.preventDefault()
方法阻止瀏覽器默認(rèn)行為。例如,當(dāng)你在一個鏈接上添加 @click.prevent
修飾符時,點(diǎn)擊該鏈接不會導(dǎo)致瀏覽器跳轉(zhuǎn)到鏈接的目標(biāo)頁面,而是只會調(diào)用事件處理程序。
此外,當(dāng)你使用 @click.prevent
修飾符時,Vue 還會使用 event.stopPropagation()
方法阻止事件冒泡。這意味著,當(dāng)你在一個具有嵌套結(jié)構(gòu)的組件中添加 @click.prevent
修飾符時,如果你點(diǎn)擊一個子組件,事件處理程序不會被傳遞到父組件中。只有當(dāng)你在具有該修飾符的元素上直接點(diǎn)擊時,才會觸發(fā)事件處理程序。
例如,如果你在一個表單提交按鈕上添加 @click.prevent
修飾符,點(diǎn)擊該按鈕不會導(dǎo)致表單提交,而只會調(diào)用事件處理程序。這對于需要在按鈕被點(diǎn)擊時進(jìn)行一些自定義邏輯或者異步提交表單的情況非常有用。
vue的@click.stop
在Vue中,可以使用@click.stop
來阻止事件冒泡。
事件冒泡是指事件從嵌套元素中的最深處向外傳遞的過程。當(dāng)一個元素上觸發(fā)了事件,它會向上冒泡到其父元素,直到傳遞到文檔的根元素。這意味著在子元素上觸發(fā)的事件也會在其祖先元素上觸發(fā)。
如果你想阻止事件從子元素冒泡到父元素,可以在子元素上使用@click.stop
指令。例如,下面的代碼將阻止child
元素的click
事件冒泡到parent
元素:
<div @click="parent"> <div @click.stop="child"></div> </div>
在這個例子中,當(dāng)用戶點(diǎn)擊child
元素時,parent
方法不會被調(diào)用,因?yàn)?code>@click.stop阻止了事件冒泡到parent
元素。
vue的@click.capture
@click.capture
是 Vue 中的一個事件修飾符,用于在觸發(fā)事件時捕獲所有的冒泡事件。
事件捕獲和事件冒泡是兩種不同的事件傳播方式。在事件捕獲階段,事件從頂層元素逐級向下傳遞到目標(biāo)元素;在事件冒泡階段,事件從目標(biāo)元素逐級向上傳遞到頂層元素。默認(rèn)情況下,Vue 組件中的事件處理程序只會在事件冒泡階段被調(diào)用。
當(dāng)你使用 @click.capture
修飾符時,Vue 會在事件捕獲階段調(diào)用事件處理程序,而不是在事件冒泡階段。這意味著事件處理程序?qū)⒃谧咏M件之前調(diào)用,而不是在子組件之后調(diào)用。
例如,如果你在一個包含多個子組件的組件上添加 @click.capture
修飾符,那么當(dāng)你點(diǎn)擊子組件時,事件處理程序?qū)⑹紫仍诟附M件中被調(diào)用,然后才會在子組件中被調(diào)用。
這個修飾符通常用于需要在父組件中攔截事件并進(jìn)行一些處理的情況,例如在組件外部點(diǎn)擊時關(guān)閉下拉菜單。
vue的@click.once
@click.once
是 Vue 中的一個事件修飾符,用于綁定一個只會觸發(fā)一次的點(diǎn)擊事件處理程序。
當(dāng)你在一個元素上添加 @click.once
修飾符時,Vue 會在該元素被點(diǎn)擊一次時調(diào)用事件處理程序,并立即將該修飾符從事件中刪除。這意味著,當(dāng)你再次點(diǎn)擊該元素時,不會再觸發(fā)事件處理程序。
例如,你可以在一個打開對話框的按鈕上添加 @click.once
修飾符,以確保對話框只會被打開一次。當(dāng)用戶再次點(diǎn)擊該按鈕時,不會再次打開對話框。
需要注意的是,@click.once
修飾符只會在綁定的元素上生效,如果該元素有子元素,并且你點(diǎn)擊了其中一個子元素,那么該子元素的點(diǎn)擊事件處理程序也會被觸發(fā)。如果你希望只在點(diǎn)擊該元素本身時觸發(fā)事件處理程序,可以使用 @click.self.once
修飾符。
vue的@click.self
@click.self
是 Vue 中的一個事件修飾符,用于綁定一個只有在點(diǎn)擊元素本身時才會觸發(fā)的點(diǎn)擊事件處理程序。
在 Vue 組件中,當(dāng)你使用 @click.self
修飾符時,Vue 會在觸發(fā) click 事件時調(diào)用事件處理程序,但是只有當(dāng)你直接點(diǎn)擊該元素本身時才會觸發(fā)。如果你點(diǎn)擊該元素的子元素,事件處理程序不會被觸發(fā)。
例如,當(dāng)你在一個具有嵌套結(jié)構(gòu)的組件中,需要在點(diǎn)擊組件本身時進(jìn)行一些自定義邏輯,而在點(diǎn)擊組件內(nèi)部的某個子元素時不進(jìn)行任何操作時,你可以使用 @click.self
修飾符。
需要注意的是,@click.self
修飾符只會在綁定的元素上生效,如果該元素有子元素,并且你點(diǎn)擊了其中一個子元素,那么該子元素的點(diǎn)擊事件處理程序也會被觸發(fā)。如果你希望只在點(diǎn)擊該元素本身時觸發(fā)事件處理程序,并且忽略子元素的點(diǎn)擊事件處理程序,可以使用 @click.prevent
和 @click.stop
修飾符。
vue的@click.passive
@click.passive
修飾符可以在 Vue 組件中用于優(yōu)化 click 事件的性能。下面是一個使用 @click.passive
修飾符的示例:
<template> <div @click="handleClick" @click.passive="handleClickPassive">Click me</div> </template> <script> export default { methods: { handleClick() { console.log('Clicked!'); // 阻止默認(rèn)行為 event.preventDefault(); }, handleClickPassive() { console.log('Clicked (passive)!'); } } } </script>
在這個示例中,當(dāng)你在 div
元素上點(diǎn)擊時,會觸發(fā)兩個事件處理程序:handleClick
和 handleClickPassive
。handleClick
方法會調(diào)用 event.preventDefault()
方法阻止默認(rèn)行為,而 handleClickPassive
方法則使用了 @click.passive
修飾符告知瀏覽器該事件處理程序不會調(diào)用 event.preventDefault()
方法。
由于使用了 @click.passive
修飾符,瀏覽器可以在處理 click 事件時進(jìn)行一些性能優(yōu)化,從而提高性能和響應(yīng)速度。
vue的鍵盤相應(yīng)事件
當(dāng)我們在 Vue.js 中處理鍵盤事件時,通常需要使用以下幾種鍵盤事件:
@keydown - 按下鍵盤上的任意一個鍵時觸發(fā)的事件。
<template> <div @keydown="onKeyDown"></div> </template> <script> export default { methods: { onKeyDown(event) { console.log('KeyDown event:', event.key); } } } </script>
@keyup - 松開鍵盤上的任意一個鍵時觸發(fā)的事件。
<template> <div @keyup="onKeyUp"></div> </template> <script> export default { methods: { onKeyUp(event) { console.log('KeyUp event:', event.key); } } } </script>
@keypress - 當(dāng)按下字符鍵時觸發(fā)的事件。
<template> <div @keypress="onKeyPress"></div> </template> <script> export default { methods: { onKeyPress(event) { console.log('KeyPress event:', event.key); } } } </script>
@keydown.[key] - 當(dāng)按下特定鍵時觸發(fā)的事件,可以通過鍵名進(jìn)行綁定。
<template> <div @keydown.enter="onEnterKeyDown"></div> </template> <script> export default { methods: { onEnterKeyDown() { console.log('Enter key is pressed!'); } } } </script>
@keyup.[key] - 當(dāng)松開特定鍵時觸發(fā)的事件,可以通過鍵名進(jìn)行綁定。
<template> <div @keyup.enter="onEnterKeyUp"></div> </template> <script> export default { methods: { onEnterKeyUp() { console.log('Enter key is released!'); } } } </script>
@keydown.[key].prevent - 當(dāng)按下特定鍵時阻止默認(rèn)行為,可以通過 prevent 修飾符實(shí)現(xiàn)。
<template> <div @keydown.enter.prevent></div> </template>
以上是常用的鍵盤事件,你可以根據(jù)實(shí)際需求進(jìn)行選擇和使用。在代碼中,我們可以通過 event
參數(shù)來獲取鍵盤事件的相關(guān)信息,如按下的鍵的名稱、keyCode 碼等等。通過鍵盤事件,我們可以實(shí)現(xiàn)一些常見的交互操作,例如:表單驗(yàn)證、搜索提示等等。
總結(jié)
到此這篇關(guān)于Vue鼠標(biāo)點(diǎn)擊事件和鍵盤事件的文章就介紹到這了,更多相關(guān)Vue鼠標(biāo)點(diǎn)擊事件和鍵盤事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3?Radio單選切換展示不同內(nèi)容實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue3?Radio單選切換展示不同內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07vue循環(huán)中調(diào)用接口-promise.all();按順序執(zhí)行異步處理方式
這篇文章主要介紹了vue循環(huán)中調(diào)用接口-promise.all();按順序執(zhí)行異步處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07vue項(xiàng)目里面引用svg文件并給svg里面的元素賦值
這篇文章主要介紹了vue項(xiàng)目里面引用svg文件并給svg里面的元素賦值,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08vue使用threeJs導(dǎo)入obj模型并實(shí)現(xiàn)添加標(biāo)注
這篇文章主要介紹了vue使用threeJs導(dǎo)入obj模型并實(shí)現(xiàn)添加標(biāo)注方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05element el-table 表格限制多選個數(shù)功能
這篇文章主要介紹了element el-table 表格限制多選個數(shù)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-03-03