• [js高手之路] vue系列教程


    本文主要讲解事件冒泡,事件绑定的简写,事件默认行为,按键码等一系列与事件相关的知识.

    一、事件绑定的简写,@事件类型.  之前我的[js高手之路] vue系列教程 - vue的事件绑定与方法(2) 用的是v-on绑定

     1     window.onload = function(){
     2         var c = new Vue({
     3             el : 'body',
     4             methods : {
     5                 say : function(){
     6                     alert( '你好' );
     7                 }
     8             }
     9         });
    10     }
    1 <input type="button" value="点我" @click="say();"/>

    二、传递事件对象

     1     window.onload = function(){
     2         var c = new Vue({
     3             el : 'body',
     4             methods : {
     5                 say : function(e){
     6                     alert( e.clientX );
     7                 }
     8             }
     9         });
    10     }
    1 <input type="button" value="点我" @click="say($event);"/>

    三、事件冒泡

     1     window.onload = function(){
     2         var c = new Vue({
     3             el : 'body',
     4             methods : {
     5                 say : function(){
     6                    alert('你好');
     7                 },
     8                 say2 : function(){
     9                     alert( '你好啊' );
    10                 }
    11             }
    12         });
    13     }
    1     <div id="box">
    2         <div @click="say2();">
    3             <input type="button" value="点我" @click="say();"/>
    4         </div>
    5     </div>

    四、阻止事件冒泡:有两种方式,一种是原生方式,一种是vue提供的stop

     1         var c = new Vue({
     2                 el: 'body',
     3                 methods: {
     4                     say: function (ev) {
     5                         alert('你好');
     6                         ev.cancelBubble = true;
     7                     },
     8                     say2: function () {
     9                         alert('你好啊');
    10                     }
    11                 }
    12             });
    1 <div id="box">
    2     <div @click="say2();">
    3         <input type="button" value="点我" @click="say($event);"/>
    4     </div>
    5 </div>
     1  window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function (ev) {
     6                         alert('你好');
     7                     },
     8                     say2: function () {
     9                         alert('你好啊');
    10                     }
    11                 }
    12             });
    13         }
    1 <div id="box">
    2     <div @click="say2();">
    3         <input type="button" value="点我" @click.stop="say();"/>
    4     </div>
    5 </div>

    五、右键菜单的默认行为: 弹出右键菜单

     1         window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function () {
     6                         alert('你好');  //执行完之后 会弹出右键菜单
     7                     }
     8                 }
     9             });
    10         }
    1 <input type="button" value="点我" @contextmenu="say();"/>

    2种方式阻止右键菜单的默认行为:

    原生方式:

     1         window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function (ev) {
     6                         alert('你好');  //执行完之后 会弹出右键菜单
     7                         ev.preventDefault();
     8                     }
     9                 }
    10             });
    11         }
    1 <div id="box">
    2     <input type="button" value="点我" @contextmenu="say($event);"/>
    3 </div>

    vue提供的prevent方式

     1         window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function () {
     6                         alert('你好');
     7                     }
     8                 }
     9             });
    10         }
    11 
    12         <div id="box">
    13             <input type="button" value="点我" @contextmenu.prevent="say();"/>
    14         </div>

    keydown事件绑定:

     1         window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function () {
     6                         alert('你好');
     7                     }
     8                 }
     9             });
    10         }
    11 
    12         <div id="box">
    13             <input type="text" @keydown="say();"/>
    14         </div>

    按键码keycode:

     1         window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function (ev) {
     6                         alert( ev.keyCode );
     7                     }
     8                 }
     9             });
    10         }
    11 
    12         <div id="box">
    13             <input type="text" @keydown="say($event);"/>
    14         </div>

    按键的判断方式: 按键码与英文方法

    1,根据回车键的按键码keycode等于13判断

     1         window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function (ev) {
     6                         if( ev.keyCode == 13 ){
     7                            alert( '你按下去的是回车键' );
     8                         }
     9                     }
    10                 }
    11             });
    12         }
    13 
    14         <div id="box">
    15             <input type="text" @keyup="say($event);"/>
    16         </div>

    简写方式:

    1         methods: {
    2                     say: function () {
    3                        alert( '你按下去的是回车键' );
    4                     }
    5                 }
    6 
    7 //html代码
    8 <input type="text" @keyup.13="say();"/>

    enter判断:

    1         methods: {
    2                     say: function () {
    3                        alert( '你按下去的是回车键' );
    4                     }
    5                 }
    6 //html代码
    7 <input type="text" @keyup.enter="say();"/>

    方向键判断:

     1         window.onload = function () {
     2             var c = new Vue({
     3                 el: 'body',
     4                 methods: {
     5                     say: function () {
     6                         alert('左方向键');
     7                     },
     8                     say2: function () {
     9                         alert('右方向键');
    10                     },
    11                     say3: function () {
    12                         alert('上方向键');
    13                     },
    14                     say4: function () {
    15                         alert('下方向键');
    16                     },
    17                 }
    18             });
    19         }
     1 <div id="box">
     2     <input type="text" @keyup.left="say();"/>
     3     <input type="text" @keyup.right="say2();"/>
     4     <input type="text" @keyup.up="say3();"/>
     5     <input type="text" @keyup.down="say4();"/>
     6     <br/>
     7     <input type="text" @keyup.37="say();"/>
     8     <input type="text" @keyup.39="say2();"/>
     9     <input type="text" @keyup.38="say3();"/>
    10     <input type="text" @keyup.40="say4();"/>
    11 </div>
  • 相关阅读:
    hdu2067 简单dp或者记忆化搜索
    hdu2067 简单dp或者记忆化搜索
    洛谷 P4555 [国家集训队]最长双回文串(Manacher)
    洛谷 P1659 [国家集训队]拉拉队排练(Manacher)
    洛谷 P3805【模板】manacher算法
    UVA 1335 Beijing Guards(二分答案)
    UVA 1267 Network(DFS)
    UVA 11520 Fill the Square(模拟)
    UVA 12097 Pie(二分答案)
    UVA 12124 Assemble(二分答案)
  • 原文地址:https://www.cnblogs.com/ghostwu/p/7367771.html
Copyright © 2020-2023  润新知