jQuery为DOM动态追加事件的方法


Posted in Javascript onFebruary 16, 2017

处理一个列表绑定,因为是一个展示项目,没有使用复杂的插件,直接jsrender写了个模板,但是后面有一个操作按钮,去查看数据详情,想到了jquery使用on进行事件委托,然后就开搞

最初是这样写的:

$(".btn-open").on("click", function () {        
alert($(this).text());      
})

当然这样是不起作用的,因为在document reday后,.btn-open 这个元素根本还不存在呢,列表没绑定,事件当然也帮不上的!

 然后是这样的:

$(".table").on("click", ".btn-open", function () {        
alert($(this).text());      
})

代码可以看得明白,找到.table 元素,给.btn-open 追加 click事件。一般来说这样就可以了。但是依然不行,我勒个去,我开始怀疑自己的记忆了。然后去找了下文档。

文档说:

事件处理只能绑定在当前被选中的元素上;而且,在您的代码调用.on()的时候,他们必须在页面文档中已经存在。

好吧,在document ready时,.table确实不存在,所以 还要继续改

$(document).on("click", ".btn-open", function () {        
alert($(this).text());      
})

终于可以工作了。

总结:

1.jQuery委托事件与直接绑定事件的区别:

$(“X”).on(“click”,function(){})

$(“X”).on(“click”,”选择X的子元素”,function(){})

2.事件处理只能绑定到当前存在的元素身上,也就是第一个选择器中的内容必须当前存在(这也是为什么第二段代码不起作用的原因,因为.table不存在),所以保险起见,可以直接绑定委托事件到document上。

以前一直没有仔细的阅读文档,对这一块模棱两可,今天弄清楚并记录下来。

以上这篇jQuery为DOM动态追加事件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
window.open打开页面居中显示的示例代码
Dec 27 Javascript
AngularJS基础知识笔记之过滤器
May 10 Javascript
纯javascript实现分页(两种方法)
Aug 26 Javascript
JavaScript获取浏览器信息的方法
Nov 20 Javascript
深入浅析JavaScript中的3DES
Aug 24 Javascript
angularjs的select使用及默认选中设置
Apr 08 Javascript
利用node.js如何搭建一个简易的即时响应服务器
May 28 Javascript
基于BootStrap的文本编辑器组件Summernote
Oct 27 Javascript
安装Node.js并启动本地服务的操作教程
May 12 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
webpack5 联邦模块介绍详解
Jul 08 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 #Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 #Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 #Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
Feb 15 #Javascript
bootstrap中添加额外的图标实例代码
Feb 15 #Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 #Javascript
js实现模糊匹配功能
Feb 15 #Javascript
You might like
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
php输入流php://input使用浅析
2014/09/02 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
解决c++调用python中文乱码问题
2020/07/29 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
预防传染病方案
2014/06/14 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python