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:修饰符可以串联
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章