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 相关文章推荐
jQuery实现鼠标滑过遮罩并高亮显示效果
Jul 16 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
Nov 15 Javascript
JavaScript中DOM详解
Apr 13 Javascript
bootstrap组件之导航组件使用方法
Jan 19 Javascript
原生js实现秒表计时器功能
Feb 16 Javascript
浅谈如何使用webpack构建多页面应用
May 30 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
关于自定义Egg.js的请求级别日志详解
Dec 12 Javascript
JS实现的贪吃蛇游戏案例详解
May 01 Javascript
基于JavaScript实现表格隔行换色
May 08 Javascript
微信小程序实现带放大效果的轮播图
May 26 Javascript
vuex存取值和映射函数使用说明
Jul 24 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中使用Oracle数据库(4)
2006/10/09 PHP
NO3第三帝国留言簿制作过程
2006/10/09 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
discuz7 phpMysql操作类
2009/06/21 PHP
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
详解Python中的__init__和__new__
2014/03/12 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python3.4解释器用法简单示例
2019/03/22 Python
详解python中的模块及包导入
2019/08/30 Python
python requests证书问题解决
2019/09/05 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
几道PHP的面试题
2012/05/19 面试题
人事主管的岗位职责
2013/11/16 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
招股说明书范本
2014/05/06 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
展览会邀请函
2015/02/02 职场文书
质量保证书怎么写
2015/02/27 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android