Vue语法:事件绑定

事件绑定

1.指令v-on

Vue使用v-on指令监听DOM事件,我们可以使用v-on指令绑定到DOM节点上,例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>指令v-on</title>
</head>
<body>
<div id="app">
    <button v-on:click="logInfo()">打印消息(default:Hello World)</button><br>
    <button v-on:click="logInfo('Self Message')">打印消息('Self Message')</button><br>
    <button v-on:click="console.log('A Vue app')">打印消息('A Vue app')</button><br>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script>
<script>
    new Vue({
        el:'#app',
        data(){
            return{

            }
        },
        methods:{
            logInfo(msg){
                console.log(msg || 'Hello World');
            }
        }
    });
</script>
</body>
</html>

同时v-on也可以简写为@

2.获取事件对象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取事件对象</title>
</head>
<body>
<div id="app">
    <!--1.在事件函数不需要传参市可以这样写-->
    <input type="text" @keyup="handleKeyUp"><br>
    <!--2.手动传入$event对象-->
    <input type="text" @keyup="handleKeyUp($event)">
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script>
<script>
    new Vue({
        el:'#app',
        data(){
            return{

            }
        },
        methods:{
            handleKeyUp(event){
                console.log(event.key,event)
            }
        }
    });
</script>
</body>
</html>
3. 常见的修饰符
名称可用版本可用事件说明
.stop所有任意当时间出发时,阻止事件冒泡
.prevent所有任意当事件触发时,组织元素默认行为
.capture所有任意当事件触发时,阻止事件捕获
.self所有任意限制事件仅用于节点本身
.once2.1.4以上任意事件被触发一次后即解除监听
.passive2.3.0以上滚动移动端,限制事件永不调用preventDefault()方法
4.案件修饰符
别名修饰符键值修饰符对应按键
.delete.8/.46回格/删除
.tab.9制表
.enter.13回车
.esc.27退格
.space.32空格
.left.37
.up.38.
.right.39
.down.40
5.组合修饰符
修饰符可用版本对应键
.ctrl2.1.0以上Ctrl键
.alt2.1.0以上Alt键
.shift2.1.0以上Shift键
.meta2.1.0以上meta键(Window系统上为 田键)

下面的这个案例实现了按住Ctrl再点击鼠标的事件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组合修饰符</title>
    <style>
        .changeMouse{
            cursor: pointer;
        }
    </style>
</head>
<body>
<div id="app">
    <h1 @click.ctrl="logWithCtrl" @click="logSingle" @mouseover="addActive">按住Ctrl点击</h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script>
<script>
    var vue = new Vue({
        el:'#app',
        data(){
            return{
            }
        },
        methods:{
            addActive(event){
                event.currentTarget.className="changeMouse"
            },
            logSingle(event){
                if (!event.ctrlKey){
                    console.log('------------分割线-----------');
                    console.log('$event.ctrlKey:',event.ctrlKey);
                    console.log('已经点击过了。。。')
                }else {
                    console.log('.......')
                }
            },
            logWithCtrl(event){
                console.log('------------分割线-----------');
                console.log('$event.ctrlKey:',event.ctrlKey);
                console.log('按住Ctrl,点击的。。。')
            }
        }
        });
</script>
</body>
</html>

小白一枚,如有问题,请多多指教😃

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值