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 相关文章推荐
Javascript中Eval函数的使用
Mar 23 Javascript
javascript时间函数大全
Jun 30 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
ie下js不执行的几种可能
Feb 28 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
vue之将echart封装为组件
Jun 02 Javascript
详解如何用VUE写一个多用模态框组件模版
Sep 27 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
Oct 30 Javascript
jquery插件懒加载的示例
Oct 24 jQuery
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_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
Javascript复制实例详解
2016/01/28 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
广告设计专业自荐信范文
2013/11/14 职场文书
上班上网检讨书
2014/01/29 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
2014离婚协议书范文
2014/09/10 职场文书
承诺函范文
2015/01/21 职场文书
个性与发展自我评价
2015/03/06 职场文书
刑事辩护词范文
2015/05/21 职场文书
小学大队长竞选稿
2015/11/20 职场文书