Vue.js笔记------事件

news2025/1/13 19:46:59

一、事件与事件流

   1、事件与事件流

    【事件】

      JavaScript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性。常见的有加载事件、鼠标事件。

    【事件流】

      由于DOM是一个树结构,如果在父子节点绑定事件时候,当触发子节点的时候,就存在一个顺序问题,这就涉及到了事件流。页面触发一个事件时,会按照一定的顺序来响应事件,事件的响应过程为事件流。

    【js的事件流三阶段】

        事件捕捉阶段(capture phrase):事件开始由顶层对象触发,然后逐级向下传播,直到目标元素;

        处于目标阶段(target phrase):处于绑定事件的元素上;

        事件冒泡阶段(bubbling phrase):事件由具体的元素先接收,然后逐级向上传播,直到不具体的元素;(事件捕获是从上到下,而事件冒泡,是从下到上。)

2、事件冒泡与事件捕获

     事件冒泡和事件捕获分别由微软和网景公司提出,是为了解决页面中事件流(事件发生顺序)的问题。

     事件冒泡:

        微软提出了名为事件冒泡(event bubbling)的事件流。

        事件冒泡可以形象的比喻成把一颗石头投入水中,泡泡会一直从水底冒出水面。

        也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。

        因此在事件冒泡的概念下在button按钮发生click事件的顺序应该是button→div→body→html→document.

        事件捕获:

        网景提出另一种事件流名为事件捕获(event capturing)。

        与事件冒泡相反,事件会从最外层开始发生,直到具体的元素。

        因此在事件捕获的概念下在button按钮发生click事件的顺序应该是document→html→bodv→div→button。

        后来W3C采用折中的方式,平息了网景和微软之间的战争,制定了统一的标准--先捕获在冒泡。

3、事件对象

        用户界面事件:涉及到与BOM交互的通用浏览器事件。

        load事件:在整个页面(包括所有外部资源如图片 JavaScript文件和CSS文件)加载完成后触发。

 window.onload = function() {
            alert("页面加载完成")
        };

    

        焦点事件:在元素获得或失去焦点时触发的事件。 

        鼠标事件:使用鼠标在页面上执行某些操作时触发的事件。

        滚轮事件:使用鼠标滚轮时触发的事件。

        输入事件:向文档中输入文本时触发的事件。

        键盘事件:使用键盘在页面上执行某些操作时触发的事件,

        输入法事件:使用某些输入法时触发的事件

二、事件绑定指令

    计算正方形的面积

 

<body>
    <div id="app">
        <!--方法一:以内联方式响应事件-->
        <!--<button v-on:click="length++">改变边长</button>-->

        <!--方法二:绑定方法处理事件-->
        <button v-on:click="changeLength">改变边长</button>:
        <p>正方形的边长是{{ length }},面积是{{ area }}</p>
    </div>
    
    <script src="../../vue.js"></script>

    <script>
        new Vue({
            el:'#app',
            data:{
                length:2
            },
            computed:{
                area(){
                    return this.length*this.length
                },
            },
            methods:{
                changeLength(){
                    this.length++
                }
            }
        })
    </script>
</body>

三、事件修饰符

  1、事件修饰符使用

 <div id="app" @click="divClick">
        <ul @click.self="ulClick">
            <!-- 事件修饰符 -->
            <!-- .stop阻止事件冒泡 -->
            <li @click="liClick">111</li>
            <li>222</li>
            <li>333</li>
        </ul>
    </div>

    <script src="../../vue.js"></script>

    <script>
        new Vue({
            el:'#app',
            methods:{
                divClick(){
                    console.log('div');
                },
                ulClick(){
                    console.log('ul');
                },
                liClick(evt){
                    console.log('li');
                    // JS原生写法:阻止事件冒泡
                    // evt.stopPropagation()
                }
            }
        })
    </script>

 2、事件修饰符详解

    

<body>
    <!-- 事件修饰符
        
        event.preventDefault()/阻止状认行为或者event.stopPropogation()/阻止事件冒泡.
        以上方法而要处理D0M事件细节,代码繁项.
        为了解决这个问题,Vue.js提供了事件修饰符.
        修饰符是以点开头的指令后缀来表示的, -->
    
    <!-- .stop阳止冒泡事件继续传播 -->
    <a v-on:click.stop="doThis"></a>
    
    <!-- .se1f当事件日标是当前元素自身时,触发事件 -->
    <ul @click.self="ulClick"></ul>

    <!-- .capture将原本默认的冒泡方式改为捕捉方式 -->
    
    <!-- :prevent阻止事件默认行为 -->
    <!--@submit.prevent提交事件不再重载顶面-->
    <form v-on:submit.prevent="onSubmit"></form>

    <!--.stop.prevent修饰符可以串联,既阻止冒泡又阻止默认行为.-->
    <a v-on:click.stop.prevent="doThat"></a>

    <!--只有修饰符-->
    <form v-on:submit.prevent></form>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409889.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端使用xlsx导出数据生成Excel文件

xlsx的使用安装 xlsx引入 xlsx需要导出的数据源将数据源转成需要的二维数组定义 Excel 表头将定义好的表头添加到 body 中1 创建虚拟的 workbook2 将二维数组转成 sheet!merges 设置单元格合并!cols 设置列宽!rows 设置行高3 向 workbook 中添加 sheet4 导出 workbook 完整示例…

JavaWeb 简单的图书管理系统(jsp+servlet)

关于与需要的文件下载字体颜色分类:黑色 表示正文蓝色 表示一个超链接&#xff0c;点击可以跳转页面橙色 表示一级标题或项目的包名绿色 表示子级内容中含有代码或解释的标题紫色 表示一个代码块的标题红色 表示()外的文件是()内文件的子类,实现类或依赖浅灰 表示解释或其类型高…

Vue封装Axios实现全局的loading自动显示效果

在 vue 项目中&#xff0c;我们通常会使用 Axios 库来与后台进行数据交互。而当我们发起 ajax 请求时&#xff0c;常常需要在页面上显示一个加载框&#xff08;Loading 效果&#xff09;&#xff0c;然后等数据返回后自动将其隐藏。要实现这个功能&#xff0c;我们可以在每次请…

尚品汇前台项目总结

这是我的第一篇个人博客&#xff0c;主要是对我学习前端过程中的一些主记录。由于我在江苏&#xff0c;从2022年过完年&#xff0c;一直到年中&#xff0c;疫情反反复复&#xff0c;又正是大三&#xff0c;马上面临就业难题&#xff0c;我选择了前端。 从html,css,js基础,webAP…

15个awk的经典实战案例

目录 一、插入几个新字段 二、格式化个空白 三、筛选IPV4地址 命令及结果 第一种查询方式 第二种查询方式 第三种查询方式 四、读取.ini配置文件中的某段 命令及结果 第一种查询方式 第二种查询方式 五、根据某字段去重 命令及结果 第一种方式 第二种方式 六、…

你是这样的 CSS,19个唯美的边框

作者&#xff1a;niemvuilaptrin 译者&#xff1a;前端小智 来源&#xff1a;medium 有梦想&#xff0c;有干货&#xff0c;微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。 本文 GitHub https://github.com/qq449245884/xiaozhi 已收录&#xff0c;有一线大厂面试完整…

Vue之插槽

1. 插槽是什么 插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&#xff0c;填充的内容会替换子组件的标签。简单理解就是子组件中留下个“坑”&#xff0c;父组件可以使…

STM32入门教程课程简介(B站江科大自化协学习记录)

课程简介 STM32最小系统板面包板硬件平台 硬件设备 STM32面包板入门套件 Windows电脑 万用表、示波器、镊子、剪刀等 软件介绍 Keil MDK 5.24.1 是一款嵌入式软件开发工具&#xff0c;它提供了一个完整的开发环境&#xff0c;包括编译器、调试器和仿真器。它支持各种微控制…

微信小程序富文本解析器rich-text、web-view、wxParse、mp-html、towxml对比

微信小程序解析富文本html大概有几种方式&#xff0c;我用过的有这三种rich-text、web-view、wxParse、mp-html&#xff0c;各有各的优缺点&#xff0c;接下来聊一聊。 一、rich-text 二、web-view 三、wxParse 四、mp-html 五、towxml 一、rich-text rich-text富文本组件…

XSS漏洞攻防

目录XSS攻击简介XSS攻击的危害XSS攻击分类XSS产生原因实战靶场搭建构造xss攻击脚本弹窗警告页面嵌套页面重定向弹窗警告并重定向图片标签利用绕开过滤的脚本存储型xss基本演示访问恶意代码&#xff08;网站种马&#xff09;XSS获取键盘记录XSS盲打htmlspecialchars()函数自动xs…

SpringBoot - ZooKeeper

SpringBoot - ZooKeeper1、Curator框架的集成2、构建zookeeper客户端3、Master选举3.1、LeaderSelector3.2、LeaderLatch4、成员组注册5、节点监听1、Curator框架的集成 <dependency><groupId>org.apache.curator</groupId><artifactId>curator-recip…

博客系统前端实现

目录 1.预期效果 2.实现博客列表页 3.实现博客正文页 4.实现博客登录页 5.实现博客编辑页面 1.预期效果 对前端html,css,js有大致的了解后,现在我们实现了一个博客系统的前端页面.一共分为四个页面没分别是:登陆页面,博客列表页,博客正文页,博客编辑页 我们看下四个界面…

功能:vue:浏览器打印小票、打印参数配置

一、需求说明 1、要实现点击打印小票按钮&#xff0c;弹出预览弹框&#xff0c;点击弹框里面的打印&#xff0c;则实现浏览器打印预览&#xff0c;以及浏览器打印。 2、根据对应需求可以做步骤的加减&#xff0c;本例多了一个本地预览。 3、环境&#xff1a;pc端打印、chrome浏…

在 TypeScript 中导入 JavaScript 包,解决声明文件报错问题

前言 如果你在 TypeScript 中引入了一个纯 JavaScript 包&#xff0c;那很有可能会看到这样的报错&#xff1a; Could not find a declaration file for module ‘koumoul/vjsf/lib/VJsf’. ‘c:/*/node_modules/koumoul/vjsf/lib/VJsf.js’ implicitly has an ‘any’ type. …

uniapp拍照+上传后台 + pc端上传后台

uniapp 一、拍照&#xff0c;拿到本地路径 首先调用uniapp的api实现拍照 uni.chooseImage({sourceType: [camera,album],//拍照或是打开系统相册选择照片count: 3, //最多三张success(res) {if (Array.isArray(res.tempFilePaths)) {//最多选择三张&#xff0c;如果多选删掉…

新安webpack插件后编译报错compiler.plugin is not a function

安装使用generate-asset-webpack-plugin时报错TypeError&#xff1a;compiler.plugin is not a function&#xff0c;网上搜索了一下大概就是webpack5与这些插件不匹配。推荐的方法几乎都是换一个适配的插件版本&#xff0c;但我所需要的这个插件在npm上最近更新时间是7年前&am…

Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理

Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理 目录 Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理 一、简单介绍 二、安装 vue-awesome-swiper 三、引入&#xff08;全局或局部引入&#xff09; 四、简单使用 一、简单介绍 Vue 开发的一些知识整理…

八个步骤实现一个Web项目(在线聊天室)

实现一个在线网页的聊天室 Hello&#xff0c;今天给大家带来的是我的一个Web项目的开发过程的相关步骤&#xff0c;这个项目实现的功能是一个Web在线聊天室&#xff0c;简单的来说就是实现在网页版的聊天框&#xff0c;能够实现对于用户信息进行注册&#xff0c;登录&#xff…

vue3、ts如何封装 axios,使用mock.js

今天我们一起来看一看 vue3ts如何优雅的封装axios&#xff0c;并结合 mock.js 实现敏捷开发&#xff1b; 但是我们要注意区分 Axios 和 Ajax &#xff1a; Ajax 是一种技术统称&#xff0c;技术内容包括&#xff1a;HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要…

Vue首次加载太慢之性能优化

Vue首次加载太慢之性能优化前言一、防止编译文件中出现map文件二、vue-router 路由懒加载三、使用gzip压缩四、使用CDN加载第三方库第一步&#xff1a;引入资源第二步&#xff1a;添加配置第三步&#xff1a;去掉原有的引用五、去掉代码中的console.log前言 首页加载很慢的问题…