vue中父元素,子元素點擊事件遇到的問題

點擊子元素觸發(fā)父元素

<div class="fu" @click="fu()">

????<a class="zi" @click="zi()">點擊</a>

? ? <h1>這是父元素里面的其他內(nèi)容</h1>

</div>

methods:{

????fu(){

? ? ? ? console.log('這是父元素‘);

????},

? ? zi(){

? ? ? ? console.log('這是子元素');

????}

}

如果像上面這么寫的話衣盾,點擊父元素,會輸出父元素內(nèi)容 犀勒,但是點擊子元素摔笤,,父元素和子元素的內(nèi)容都會輸出

這個可以聯(lián)想到j(luò)s中preventDefault和stopPropagation兩個方法的區(qū)別

前者就是阻止默認行為蛤高,比如說a鏈接里面的href屬性寫了地址蚣旱,那么你點擊 就會進入一個新頁面,戴陡,如果你寫了?e.preventDefault(); 或者window.event.returnValue = false; 那么你點擊a就不會跳到一個新的頁面了塞绿,后者就是陰止冒泡。當(dāng)一個元素上的事件被觸發(fā)的時候恤批,比如說鼠標點擊了一個按鈕异吻,同樣的事件將會在那個元素的所有祖先元素中被觸發(fā)。這一過程被稱為事件冒泡喜庞。以上是js相關(guān)的用法诀浪。

回歸正題棋返,vue提供了一個方法? @click.stop = "zi()"

.stop?阻止事件繼續(xù)傳播

Vue.js 為?v-on?提供兩個?事件修飾符:.prevent?與?.stop

<!-- 阻止單擊事件冒泡 -->

<a v-on:click.stop=""></a>

<!-- 提交事件不再重載頁面 -->

<form v-on:submit.prevent=""></form>

<!-- 修飾符是可以串聯(lián)的 -->

<a v-on:click.stop.prevent="">

在這兒鏈接一篇寫得比較全的文章中的內(nèi)容

1. v-text

v-text主要用來更新textContent,可以等同于JS的text屬性笋妥。

這兩者等價:

{{msg}}

2. v-html

雙大括號的方式會將數(shù)據(jù)解釋為純文本懊昨,而非HTML。為了輸出真正的HTML春宣,可以用v-html指令酵颁。它等同于JS的innerHtml屬性。

這個div的內(nèi)容將會替換成屬性值rawHtml月帝,直接作為HTML進行渲染躏惋。

3. v-pre

v-pre主要用來跳過這個元素和它的子元素編譯過程∪赂ǎ可以用來顯示原始的Mustache標簽簿姨。跳過大量沒有指令的節(jié)點加快編譯。

{{message}}//這條語句不進行編譯{{message}}

最終僅顯示第二個span的內(nèi)容

4. v-cloak

這個指令是用來保持在元素上直到關(guān)聯(lián)實例結(jié)束時進行編譯簸搞。

{{message}}
newVue({? ? ? el:'#app',? ? ? data:{? ? ? ? message:'hello world'}? ? })

在頁面加載時會閃爍扁位,先顯示:

{{message}}

然后才會編譯為:

? ? hello world!

5. v-once

v-once關(guān)聯(lián)的實例,只會渲染一次趁俊。之后的重新渲染域仇,實例極其所有的子節(jié)點將被視為靜態(tài)內(nèi)容跳過,這可以用于優(yōu)化更新性能寺擂。

This will never change:{{msg}}//單個元素//有子元素

comment

{{msg}}

//組件
    {{i}}

上面的例子中暇务,msg,list即使產(chǎn)生改變,也不會重新渲染怔软。

6. v-if

v-if可以實現(xiàn)條件渲染垦细,Vue會根據(jù)表達式的值的真假條件來渲染元素。

yes

如果屬性值ok為true挡逼,則顯示括改。否則,不會渲染這個元素家坎。

7. v-else

v-else是搭配v-if使用的嘱能,它必須緊跟在v-if或者v-else-if后面,否則不起作用乘盖。

yesNo

8. v-else-if

v-else-if充當(dāng)v-if的else-if塊,可以鏈式的使用多次憔涉《┛颍可以更加方便的實現(xiàn)switch語句。

ABCNot A,B,C

9. v-show

hello world

也是用于根據(jù)條件展示元素兜叨。和v-if不同的是穿扳,如果v-if的值是false衩侥,則這個元素被銷毀,不在dom中矛物。但是v-show的元素會始終被渲染并保存在dom中茫死,它只是簡單的切換css的dispaly屬性。

注意:v-if有更高的切換開銷

v-show有更高的初始渲染開銷履羞。

因此峦萎,如果要非常頻繁的切換,則使用v-show較好忆首;如果在運行時條件不太可能改變爱榔,則v-if較好

10. v-for

用v-for指令根據(jù)遍歷數(shù)組來進行渲染

有下面兩種遍歷形式

//使用in,index是一個可選參數(shù)糙及,表示當(dāng)前項的索引
//使用of

下面是一個例子详幽,并且在v-for中,擁有對父作用域?qū)傩缘耐耆L問權(quán)限浸锨。

{{parent}}-{{item.text}}varexample =newVue({? ? ? el:'#app',? ? ? data:{? ? ? ? parent:'父作用域'items:[? ? ? ? ? {text:'文本1'},? ? ? ? ? {text:'文本2'}? ? ? ? ]? ? ? }? ? })

會被渲染為:

  • 父作用域-文本1
  • 父作用域-文本2
  • 注意:當(dāng)v-for和v-if同處于一個節(jié)點時唇聘,v-for的優(yōu)先級比v-if更高。這意味著v-if將運行在每個v-for循環(huán)中

    11. v-bind

    v-bind用來動態(tài)的綁定一個或者多個特性柱搜。沒有參數(shù)時迟郎,可以綁定到一個包含鍵值對的對象。常用于動態(tài)綁定class和style冯凹。以及href等谎亩。

    簡寫為一個冒號【

    <1>對象語法

    //進行類切換的例子<!--當(dāng)data里面定義的isActive等于true時,is-active這個類才會被添加起作用--><!--當(dāng)data里面定義的hasError等于true時宇姚,text-danger這個類才會被添加起作用-->varapp =newVue({? ? ? ? el:'#app',? ? ? ? data: {? ? ? ? ? ? isActive:true,? ? ? ? ? ? ? hasError:false}? ? })

    渲染結(jié)果:

    <!--因為hasError: false匈庭,所以text-danger不被渲染-->

    <2>數(shù)組語法

    <!--數(shù)組語法:errorClass在data對應(yīng)的類一定會添加--><!--is-active是對象語法,根據(jù)activeClass對應(yīng)的取值決定是否添加-->12345varapp =newVue({? ? ? ? el:'#app',? ? ? ? data: {? ? ? ? ? ? activeClass:false,? ? ? ? ? ? errorClass:'text-danger'}? ? })

    渲染結(jié)果:

    <!--因為activeClass: false浑劳,所以is-active不被渲染-->

    <3>直接綁定數(shù)據(jù)對象

    <!--在vue實例的data中定義了classObject對象阱持,這個對象里面是所有類名及其真值--><!--當(dāng)里面的類的值是true時會被渲染-->12345varapp =newVue({? ? ? ? el:'#app',? ? ? ? data: {? ? ? ? ? ? classObject:{'is-active':false,'text-danger':true}? ? ? ? ? ? ? ? ? }? ? })

    渲染結(jié)果:

    <!--因為'is-active': false,所以is-active不被渲染-->

    12. v-model

    這個指令用于在表單上創(chuàng)建雙向數(shù)據(jù)綁定魔熏。

    v-model會忽略所有表單元素的value衷咽、checked、selected特性的初始值蒜绽。因為它選擇Vue實例數(shù)據(jù)做為具體的值镶骗。

    hello {{somebody}}

    varapp =newVue({? ? ? ? el:'#app',? ? ? ? data: {? ? ? ? ? ? somebody:'小明'}? ? })

    這個例子中直接在瀏覽器input中輸入別的名字,下面的p的內(nèi)容會直接跟著變躲雅。這就是雙向數(shù)據(jù)綁定鼎姊。

    v-model修飾符

    <1>? .lazy

    默認情況下,v-model同步輸入框的值和數(shù)據(jù)∠嗫埽可以通過這個修飾符慰于,轉(zhuǎn)變?yōu)樵赾hange事件再同步。

    <2>? .number

    自動將用戶的輸入值轉(zhuǎn)化為數(shù)值類型

    <3>? .trim

    自動過濾用戶輸入的首尾空格

    13. v-on

    v-on主要用來監(jiān)聽dom事件唤衫,以便執(zhí)行一些代碼塊婆赠。表達式可以是一個方法名。

    簡寫為:【@

    varapp =newVue({el:'#app',methods:{consoleLog:function(event){console.log(1)? ? ? ? ? ? }? ? ? ? }? ? })

    事件修飾符

    .stop阻止事件繼續(xù)傳播

    .prevent事件不再重載頁面

    .capture使用事件捕獲模式,即元素自身觸發(fā)的事件先在此處處理佳励,然后才交由內(nèi)部元素進行處理

    .self只當(dāng)在 event.target 是當(dāng)前元素自身時觸發(fā)處理函數(shù)

    .once事件將只會觸發(fā)一次

    .passive告訴瀏覽器你不想阻止事件的默認行為

    <!-- 阻止單擊事件繼續(xù)傳播 --><!-- 提交事件不再重載頁面 --><!-- 修飾符可以串聯(lián) --><!-- 只有修飾符 --><!-- 添加事件監(jiān)聽器時使用事件捕獲模式 --><!-- 即元素自身觸發(fā)的事件先在此處處理休里,然后才交由內(nèi)部元素進行處理 -->...<!-- 只當(dāng)在 event.target 是當(dāng)前元素自身時觸發(fā)處理函數(shù) --><!-- 即事件不是從內(nèi)部元素觸發(fā)的 -->...<!-- 點擊事件將只會觸發(fā)一次 --><!-- 滾動事件的默認行為 (即滾動行為) 將會立即觸發(fā) --><!-- 而不會等待 `onScroll` 完成? --><!-- 這其中包含 `event.preventDefault()` 的情況 -->...

    使用修飾符時,順序很重要植兰;相應(yīng)的代碼會以同樣的順序產(chǎn)生份帐。因此,用v-on:click.prevent.self會阻止所有的點擊楣导,而v-on:click.self.prevent只會阻止對元素自身的點擊废境。

    作者:klmhly

    鏈接:http://www.reibang.com/p/c4a87e1b4ef7

    來源:簡書

    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
    • 序言:七十年代末,一起剝皮案震驚了整個濱河市筒繁,隨后出現(xiàn)的幾起案子噩凹,更是在濱河造成了極大的恐慌,老刑警劉巖毡咏,帶你破解...
      沈念sama閱讀 217,406評論 6 503
    • 序言:濱河連續(xù)發(fā)生了三起死亡事件驮宴,死亡現(xiàn)場離奇詭異,居然都是意外死亡呕缭,警方通過查閱死者的電腦和手機堵泽,發(fā)現(xiàn)死者居然都...
      沈念sama閱讀 92,732評論 3 393
    • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恢总,“玉大人迎罗,你說我怎么就攤上這事∑拢” “怎么了纹安?”我有些...
      開封第一講書人閱讀 163,711評論 0 353
    • 文/不壞的土叔 我叫張陵,是天一觀的道長砂豌。 經(jīng)常有香客問我厢岂,道長,這世上最難降的妖魔是什么阳距? 我笑而不...
      開封第一講書人閱讀 58,380評論 1 293
    • 正文 為了忘掉前任塔粒,我火速辦了婚禮,結(jié)果婚禮上筐摘,老公的妹妹穿的比我還像新娘卒茬。我一直安慰自己映跟,他們只是感情好,可當(dāng)我...
      茶點故事閱讀 67,432評論 6 392
    • 文/花漫 我一把揭開白布扬虚。 她就那樣靜靜地躺著,像睡著了一般球恤。 火紅的嫁衣襯著肌膚如雪辜昵。 梳的紋絲不亂的頭發(fā)上,一...
      開封第一講書人閱讀 51,301評論 1 301
    • 那天咽斧,我揣著相機與錄音堪置,去河邊找鬼。 笑死张惹,一個胖子當(dāng)著我的面吹牛舀锨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宛逗,決...
      沈念sama閱讀 40,145評論 3 418
    • 文/蒼蘭香墨 我猛地睜開眼坎匿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雷激?” 一聲冷哼從身側(cè)響起替蔬,我...
      開封第一講書人閱讀 39,008評論 0 276
    • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屎暇,沒想到半個月后承桥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
      沈念sama閱讀 45,443評論 1 314
    • 正文 獨居荒郊野嶺守林人離奇死亡根悼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
      茶點故事閱讀 37,649評論 3 334
    • 正文 我和宋清朗相戀三年凶异,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挤巡。...
      茶點故事閱讀 39,795評論 1 347
    • 序言:一個原本活蹦亂跳的男人離奇死亡剩彬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玄柏,到底是詐尸還是另有隱情襟衰,我是刑警寧澤,帶...
      沈念sama閱讀 35,501評論 5 345
    • 正文 年R本政府宣布粪摘,位于F島的核電站瀑晒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏徘意。R本人自食惡果不足惜苔悦,卻給世界環(huán)境...
      茶點故事閱讀 41,119評論 3 328
    • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椎咧。 院中可真熱鬧玖详,春花似錦把介、人聲如沸。這莊子的主人今日做“春日...
      開封第一講書人閱讀 31,731評論 0 22
    • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至向臀,卻和暖如春巢墅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背券膀。 一陣腳步聲響...
      開封第一講書人閱讀 32,865評論 1 269
    • 我被黑心中介騙來泰國打工君纫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芹彬。 一個月前我還...
      沈念sama閱讀 47,899評論 2 370
    • 正文 我出身青樓蓄髓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親舒帮。 傳聞我的和親對象是個殘疾皇子会喝,可洞房花燭夜當(dāng)晚...
      茶點故事閱讀 44,724評論 2 354

    推薦閱讀更多精彩內(nèi)容