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显示隐藏层比较不错的方法分析
Sep 30 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
Jun 28 Javascript
详细介绍8款超实用JavaScript框架
Oct 25 Javascript
javascript内存管理详细解析
Nov 11 Javascript
jquery实现input输入框实时输入触发事件代码
Jan 28 Javascript
javascript中的undefined和not defined区别示例介绍
Feb 26 Javascript
node.js实现爬虫教程
Aug 25 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
Nov 09 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 Javascript
如何换个角度使用VUE过滤器详解
Sep 11 Javascript
封装 axios+promise通用请求函数操作
Aug 11 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
第六节--访问属性和方法
2006/11/16 PHP
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
PHP基础知识回顾
2012/08/16 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
php实现微信发红包功能
2018/07/13 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
angular十大常见问题
2017/03/07 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
wxPython事件驱动实例详解
2014/09/28 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Django中信号signals的简单使用方法
2019/07/04 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
三八节主持词
2014/03/17 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
关于学习的演讲稿
2014/05/10 职场文书
大学生求职信
2014/06/17 职场文书
入党积极分子党支部意见
2015/06/02 职场文书