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 iframe内部出滚动条
Feb 11 Javascript
利用javascript打开模态对话框(示例代码)
Jan 11 Javascript
JS父页面与子页面相互传值方法
Mar 05 Javascript
吐槽一下我所了解的Node.js
Oct 08 Javascript
Javascript中3个需要注意的运算符
Apr 02 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
浅谈JavaScript中的string拥有方法的原因
Aug 28 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 Javascript
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
解决vue无法设置滚动位置的问题
Oct 07 Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
vue实现计步器功能
2019/11/01 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
次世代生活态度:Hypebeast
2018/07/05 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
中学自我评价
2014/01/31 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
写求职信有什么意义
2014/02/17 职场文书
销售经理工作检讨书
2015/02/19 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android
Windows7下FTP搭建图文教程
2022/08/05 Servers