JavaScript事件委托用法分析


Posted in Javascript onJanuary 24, 2015

本文实例讲述了JavaScript事件委托用法。分享给大家供大家参考。具体分析如下:

一、点击页面任何部分触发事件

创建一个script1.js文件。

(function() {

    eventUtility.addEvent(document, "click", function(evt) {

        alert('hello');

    });

}());

页面部分。

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    

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

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

</body>

</html>

输出结果:点击页面任何一处都会弹出框。

但,我们有时候希望点击document内的某个元素来触发事件。

二、使用委托触发事件

在页面上增加a标签。

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    

    <div>

        <p><a href="#">点我</a></p>

    </div>

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

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

</body>

把script1.js修改为:

(function() {

    eventUtility.addEvent(document, "click", function(evt) {

        //获取点击对象

        var target = eventUtility.getTarget(evt);

        //获取点击对象的tag名称

        var tagName = target.tagName;

        //如果tag是a

        if (tagName === "A") {

            alert("点我了");

            //阻止链接的默认行为

            eventUtility.preventDefault(evt);

        }

    });

}());

输出结果:只有点击页面上的a标签才弹出框。

以上的好处是:无论document内增加多少a标签元素,所有a标签都具有被触发的能力。像这种方式就是事件委托。我们希望为子元素注册事件,却把事件先注册到子元素的父级元素上,这样,在该父元素之内、动态添加的、任何与子元素同类的元素都注册了事件。

如果我们把事件注册到子元素上,在document中再动态添加与子元素同类的元素,都必须为这些刚动态添加的子元素分别注册事件。

另外,事件委托很好地利用了"事件冒泡"。当点击子元素,根据"事件冒泡",该子元素的父级元素捕获了该次点击事件,并触发自己的方法。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
谷歌地图打不开的解决办法
Aug 07 Javascript
JS+Canvas 实现下雨下雪效果
May 18 Javascript
BootStrap3学习笔记(一)之网格系统
May 20 Javascript
Bootstrap3 多选和单选框(checkbox)
Dec 29 Javascript
VueJs路由跳转——vue-router的使用详解
Jan 10 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
May 17 Javascript
React组件之间的通信的实例代码
Jun 27 Javascript
详解使用angular的HttpClient搭配rxjs
Sep 01 Javascript
vue中动态设置meta标签和title标签的方法
Jul 11 Javascript
新版小程序登录授权的方法
Dec 12 Javascript
javascript中导出与导入实现模块化管理教程
Dec 03 Javascript
jQuery统计上传文件大小的方法
Jan 24 #Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 #Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
Jan 24 #Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 #Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 #Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 #Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 #Javascript
You might like
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
js运动应用实例解析
2015/12/28 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
pygame实现弹球游戏
2020/04/14 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
机械工程系毕业生求职信
2013/09/27 职场文书
网站设计师的岗位职责
2013/11/21 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
市场拓展计划书
2014/05/03 职场文书
骨干教师培训方案
2014/05/06 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
小学生表扬稿范文
2015/05/05 职场文书
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python