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 相关文章推荐
让任务管理器中的CPU跳舞的js代码
Nov 01 Javascript
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
js特殊字符转义介绍
Nov 05 Javascript
JavaScript模块随意拖动示例代码
May 27 Javascript
JavaScript跨域调用基于JSON的RESTful API
Jul 09 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
JS获取多维数组中相同键的值实现方法示例
Jan 06 Javascript
小程序云开发初探(小结)
Oct 24 Javascript
简单通过settimeout看javascript的运行机制
May 10 Javascript
详解vue-cli3开发Chrome插件实践
May 29 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 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使用标签替换的方式生成静态页面
2015/05/21 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
vue实现拖拽效果
2019/12/23 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
浅谈用VSCode写python的正确姿势
2017/12/16 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python使用requests.session模拟登录
2019/08/09 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
会计自荐书
2013/12/02 职场文书
给老师的道歉信
2014/01/11 职场文书
导师工作推荐信范文
2014/05/17 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
世界文化遗产导游词
2019/08/07 职场文书