Vue的學習之路四:事件修飾符

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <title>Document</title>
    <style>
      .inner {
        height: 150px;
        background-color: darkcyan;
      }
      .outer {
        padding: 40px;
        background-color: red;
      }
    </style>
  </head>
  <body>
    
    <div id="app">
      <!-- 使用 .stop 阻止冒泡 -->
      <input type="button" value="戳他" @click.stop="btnHandler" />
      <!-- 使用 .prevent 阻止默認行爲 -->
      <a href="https://www.baidu.com/" @click.prevent="linkClick">去百度</a>
      <!-- 使用 .capture 實現捕獲觸發事件的機制 -->
      <div @click.capture="divHandler">
        <input type="button" value="戳他" @click="btnHandler">
      </div>
      <!-- 使用 .self 實現只有點擊當前元素的時候,纔會觸發事件處理函數 -->
      <div @click.self="divHandler" class="inner">
        <input type="button" value="戳他" @click="btnHandler">
      </div>
      <!-- 使用 .once 只觸發一次事件處理函數 -->
      <a href="https://www.baidu.com/" @click.prevent.once="linkClick">去百度</a>
      
      <!-- 演示:.stop 和 .self 的區別 .self只會阻止自身冒泡行爲的觸發,並不會阻止真正冒泡行爲的觸發-->
      <div class="outer" @click="div2Handler">
        <div @click.self="divHandler" class="inner">
          <input type="button" value="戳他" @click="btnHandler">
        </div>
      </div>
    </div>

    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          msg: '歡迎學習Vue',
        },
        methods: {
          divHandler() {
            console.log('這是觸發了 inner div 的點擊事件')
          },
          btnHandler() {
            console.log('這是觸發了 inner btn 的點擊事件')
          },
          linkClick() {
            console.log('這是觸發了 inner a 的點擊事件')
          },
          div2Handler() {
            console.log('這是觸發了 outer div 的點擊事件')
          },
        },
      })
    </script>
  </body>
</html>

這裏主要學習了事件修飾符

  1. .stop:阻止冒泡
  2. .prevent:阻止默認行爲
  3. .capture:捕獲觸發事件的機制
  4. .self:實現只有點擊當前元素的時候,纔會觸發事件處理函數
  5. .once:只觸發一次事件處理函數
  6. .stop.self 的區別:.self只會阻止自身冒泡行爲的觸發,並不會阻止真正冒泡行爲的觸發
  7. .stop.prevent:修飾符可以串聯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章