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 相关文章推荐
js中将字符串转换成json的三种方式
Jan 12 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
javascript常用正则表达式汇总
Jul 31 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
Oct 05 Javascript
Javascript实现跨域后台设置拦截的方法详解
Aug 04 Javascript
web前端vue之CSS过渡效果示例
Jan 10 Javascript
p5.js 毕达哥拉斯树的实现代码
Mar 23 Javascript
详解在React里使用"Vuex"
Apr 02 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
摩卡咖啡
2021/03/03 咖啡文化
3.从实例开始
2006/10/09 PHP
PHP生成UTF8文件的方法
2010/05/15 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
一道python走迷宫算法题
2018/01/22 Python
python基础教程项目三之万能的XML
2018/04/02 Python
django富文本编辑器的实现示例
2019/04/10 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
演讲稿祖国在我心中
2014/05/04 职场文书