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 相关文章推荐
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
javascript获取元素偏移量的方法有哪些
Jun 24 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
mac上配置Android环境变量的方法
Jul 08 Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
使用p5.js临摹动态图形
Oct 23 Javascript
React冒泡和阻止冒泡的应用详解
Aug 18 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
php session 错误
2009/05/21 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
Prototype Selector对象学习
2009/07/23 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
python函数参数*args**kwargs用法实例
2013/12/04 Python
基于Python的身份证号码自动生成程序
2014/08/15 Python
python中map()与zip()操作方法
2016/02/27 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
Python缓存技术实现过程详解
2019/09/25 Python
python3 使用traceback定位异常实例
2020/03/09 Python
基于python实现坦克大战游戏
2020/10/27 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
汽车广告策划方案
2014/05/31 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
小学班主任事迹材料
2014/12/17 职场文书
医生个人年终总结
2015/02/28 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS