vue之事件处理

news/2024/7/10 1:47:55 标签: vue

事件冒泡:

stop修饰符:阻止事件冒泡,用于子元素上。

事件冒泡:当父元素和子元素同时绑定了事件时,子元素先触发事件,父元素再触发事件,这是大多数浏览器的默认行为。

<div id="app-3">
    <div @click="count">
        父元素<br>
        <p @click.stop="count">子元素</p>
    </div>
    <p>这个按钮被点击了{{ counter }}次</p>
</div>
<script type="text/javascript">
    var vm3 = new Vue({
        el: '#app-3',
        data: {
            counter: 0
        },
        methods: {
            count: function() {
                this.counter += 1
            }
        }
    })
</script>

父元素(div)和子元素(p)同时绑定了事件,当点击父元素时counter加1,当点击子元素时,由于stop修饰符阻止了事件冒泡,所以counter也只加1。

如果去掉stop修饰符,当点击子元素时,counter会加2(子元素和父元素先后触发事件)。

<div id="example" @click="setVal1" style="border:1px solid black;width:300px;">
  <button @click="setVal">普通按钮</button>
  <button @click.stop="setVal">阻止冒泡</button>
  <button @click="reset">还原</button>
  <div>{{result}}</div>
</div>
<script>
var example = new Vue({
  el: '#example',
  data:{
    result:''
  },
  methods:{
    setVal(event){
      this.result+=' 子级 ';
    },
    setVal1(){
      this.result+=' 父级 ';
    },
    reset(){
      history.go()
    }
  }
})
</script>

事件捕获:

浏览器默认的一般是冒泡事件,和冒泡事件相对应的叫捕获事件。

capture修饰符:在父元素事件上设置capture属性,当点击子元素时,父元素先触发事件,子元素再触发事件。

<div id="example" @click.capture="setVal1" style="border:1px solid black;width:300px;">
  <button @click="setVal">事件捕获</button>
  <button @click="reset">还原</button>
  <div>{{result}}</div>
</div>
<script>
var example = new Vue({
  el: '#example',
  data:{
    result:''
  },
  methods:{
    setVal(event){
      this.result+=' 子级 ';
    },
    setVal1(){
      this.result+=' 父级 ';
    },
    reset(){
      history.go()
    }
  }
})
</script>

self修饰符:

用于实现只有点击当前元素的时候,才会触发事件处理函数,用于父元素上。

鼠标修饰符:

这些修饰符会限制处理程序监听特定的滑鼠按键

.left 左键
.right 右键
.middle 滚轮

<div id="example">
  <button @mouseup.right="right" @mouseup.middle="middle" @mouseup.left="left">{{message}}</button>
</div>
<script>
var example = new Vue({
  el: '#example',
  data:{
    message:'分别用左、中、右键进行点击,会出现不同的效果'
  },
  methods:{
    left(){
      this.message = 'left'
    },
    right(){
      this.message = 'right'
    },
    middle(){
      this.message = 'middle'
    },        
  }
})
</script>

键值修饰符:

在监听键盘事件时,经常需要监测常见的键值。 Vue 允许为 v-on 在监听键盘事件时添加关键修饰符

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">

 记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:

.enter 回车
.tab 制表键
.delete (捕获 “删除” 和 “退格” 键)
.esc 返回
.space 空格
.up 上
.down 下
.left 左
.right 右
<div id="example">
  <button @keyup.enter="enter" @keyup.tab="tab" @keyup.delete="delete1" @keyup.esc="esc" @keyup.space="space" @keyup.up="up" @keyup.down="down" @keyup.left="left" @keyup.right="right">{{message}}</button>
</div>
<script>
var example = new Vue({
  el: '#example',
  data:{
    message:'将光标置于按钮上后,按下键盘上不同的按键,会有不同的效果'
  },
  methods:{
    enter(){
      this.message = 'enter'
    },
    tab(){
      this.message = 'tab'
    },
    delete1(){
      this.message = 'delete'
    }, 
    esc(){
      this.message = 'esc'
    },
    space(){
      this.message = 'space'
    },
    up(){
      this.message = 'up'
    },
    down(){
      this.message = 'down'
    },
    left(){
      this.message = 'left'
    },
    right(){
      this.message = 'right'
    },                 
  }
})
</script>

 可以通过全局 config.keyCodes 对象自定义键值修饰符别名

// 可以使用 v-on:keyup.a
Vue.config.keyCodes.a = 65
<div id="example">
  <button @keyup.a="a"  @keyup.b="b">{{message}}</button>
</div>
<script>
Vue.config.keyCodes.a = 65;
Vue.config.keyCodes.b = 66;
var example = new Vue({
  el: '#example',
  data:{
    message:'按下键盘上的a键或b键'
  },
  methods:{
    a(){
      this.message = 'a'
    },
    b(){
      this.message = 'b'
    },    
  }
})
</script>

系统修饰键:

可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。

ctrl
.alt
.shift
.meta

<!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>
<div id="example">
  <button @click.ctrl="ctrl"  @click.alt="alt"  @click.shift="shift"  @click.meta="meta">{{message}}</button>
</div>
<script>
var example = new Vue({
  el: '#example',
  data:{
    message:'分别用按住辅助键ctrl、alt、shift、meta进行点击,会出现不同的效果'
  },
  methods:{
    ctrl(){
      this.message = 'ctrl'
    },
    alt(){
      this.message = 'alt'
    },
    shift(){
      this.message = 'shift'
    },  
    meta(){
      this.message = 'meta'
    },           
  }
})
</script>

组合按键不能单独触发事件,要与非组合按键一起才能触发事件


http://www.niftyadmin.cn/n/887072.html

相关文章

tv英语域名注册_Sedo榜:域名just.me以33万元领衔

西部数码(west.cn)10月10日&#xff0c;新一期的sedo域名交易榜上共89个域名超2000美元成交。其中&#xff0c;英文域名cene.com以12,500美元成交&#xff0c;约合人民币8.4万元&#xff1b;国别域名just.me则以50,000美元易主&#xff0c;约合人民币33万元。域名cene.com注册于…

html5新增的标签是什么,HTML5中新增的一些标签和描述

最近有抽一些时间来研究HTML/CSS&#xff0c;当然包括了HTML5和CSS3了&#xff0c;因为毕竟是最新的技术嘛&#xff0c;相对于java来说是要简单一些&#xff0c;但是如果你要贯通整个系统来学习&#xff0c;那还是有一定的难度的。那么今天智言就列举出了几个HTML5中的一些新标…

vm表单输入绑定之修饰符:.lazy、.number、.trim

.lazy&#xff1a; 在输入框中&#xff0c;v-model 默认是同步数据&#xff0c;使用 .lazy 会转变为在 change 事件中同步 &#xff0c;也就是在失去焦点 或者 按下回车键时才更新。 .number&#xff1a; 修饰符可以将 输入的值转化为Number类型 &#xff0c;否则虽然你输入…

h5外卖源码php_微前端在美团外卖的实践

微前端是微服务理念在前端的应用。之前我们给大家介绍过微前端在美团HR系统和美团闪购的实践文章。今天的文章来自美团外卖广告团队&#xff0c;他们参考业界优秀方案&#xff0c;同时也深度结合了广告端实际业务的情况&#xff0c;提出了基于React的中心路由基座式微前端方案。…

ztree模糊搜索及ztree与bootstrapTable表格数据左右增加和删除

<!DOCTYPE html> <html lang"zh-CN"> <head> <meta http-equiv"X-UA-Compatible" content"IEEDGE"> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>用户管…

html文档本质是一个什么文件,html是什么文件

html是超文本标记语言文件文档&#xff0c;是扩展名为“.html”的文件。HTML文件是可以被多种网页浏览器读取&#xff0c;传递各类资讯的文件。HTML文件会被存储在分布于世界各地的服务器硬盘上&#xff0c;通过传输协议用户可以远程获取这些文件所传达的资讯和信息。本教程操作…

lisp语言做房产分户图_6 件你应该用 Emacs 做的事

下面六件事情你可能都没有意识到可以在 Emacs 下完成。此外还有我们的新备忘单&#xff0c;拿去&#xff0c;充分利用 Emacs 的功能吧。-- Seth Kenlon&#xff08;作者&#xff09;想象一下使用 Python 的 IDLE 界面来编辑文本。你可以将文件加载到内存中&#xff0c;编辑它们…

ztree模糊搜索

<!DOCTYPE html> <html lang"zh-CN"> <head> <meta http-equiv"X-UA-Compatible" content"IEEDGE"> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>用户管…