JavaScript动态添加事件之事件委托


Posted in Javascript onJuly 12, 2016

先给大家讲下什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。

也就是:利用冒泡的原理,把事件加到父级上,触发执行效果。

其所谓的动态添加事件实质就是指js中的事件委托。

我们知道在js中,事件处理只能绑定在当前被选中的元素上,换句话也就是说,事件处理只能绑定在当前文档已经存在的元素上!但是,往往小伙伴们都会遇到一个问题就是,我的元素是后来动态添加到页面的,而我又想给该元素绑定事件,怎么处理?

为了说明白这一问题,我们假设需要给后来添加到当前页面的元素添加click事件。

解决这一问题的核心就是利用js的委托事件。委派事件的优势就是可以给未存在的元素绑定事件,而且委派事件往往开销也会更小!

题外话:举一个最简单的例子:当页面上有1000个div的时候,如果直接给div绑定click事件,其会为1000个元素绑定事件。但是,如果用事件委托,只需要一个元素绑定事件即可。PS:希望????履芄蝗媚忝靼资录??械暮?濉?/p>

我们只是想知道动态创建的元素如何添加事件,你说这么多做什么,做什么...

好吧,言归正传,看具体实现:

// 模拟动态创建元素li
$.ajax({
type: 'get',
data: {},
success: function () { 
$('<li>').addClass('aaa').html('11111111').appendTo($('body'));
},
});
// 给为我们刚刚动态创建的元素添加事件
$(document).on('click', 'li[class=aaa]', function(){
console.log('ddd');
});

以上所述是小编给大家介绍的JavaScript动态添加事件之事件委托,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript编程起步(第七课)
Jan 10 Javascript
JavaScript类和继承 prototype属性
Sep 03 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
Feb 23 Javascript
Javascript insertAfter() 实现函数代码
Oct 12 Javascript
javascript上传图片前预览图片兼容大多数浏览器
Oct 25 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
Dec 31 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 Javascript
Vue-Router进阶之滚动行为详解
Sep 13 Javascript
js+html获取系统当前时间
Nov 10 Javascript
JS+canvas画一个圆锥实例代码
Dec 13 Javascript
vue中nextTick用法实例
Sep 11 Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 Javascript
html+js实现简单的计算器代码(加减乘除)
Jul 12 #Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 #Javascript
javascript加减乘除的简单实例
Jul 12 #Javascript
浅谈javascript中的加减时间
Jul 12 #Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 #Javascript
基于BootStrap环境写jQuery tabs插件
Jul 12 #Javascript
Angular 路由route实例代码
Jul 12 #Javascript
You might like
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
JS自调用匿名函数具体实现
2014/02/11 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
python中的reduce内建函数使用方法指南
2014/08/31 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
python 随机森林算法及其优化详解
2019/07/11 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
python 批量将中文名转换为拼音
2021/02/07 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
技术副厂长岗位职责
2013/12/26 职场文书
铁路工务反思材料
2014/02/07 职场文书
工作态度检讨书
2014/02/11 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
学校班班通实施方案
2014/06/11 职场文书
员工培训协议书
2014/09/15 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python