关于jquery中的事件绑定bind()和live()
2024-08-25 16:22:27
live可以说是bind是方法的变种。
二者的主要区别就是live方法的作用机理是事件委托,live方法的作用机理是将事件绑定DOM的根节点上。
live方法的处理机制就是把事件绑定在DOM树的根节点上,而不是直接绑定在某个元素上。举一个例子来说明:
$(".clickMe").live("click",fn);
$("body").append("<div class='clickMe'>测试live方法的步骤</div>");
当我们点击这个新增的元素时会依次发生如下步骤:
(1)生成一个click事件,传递给div来做处理
(2)由于没有事件直接绑定在div上,所以事件直接冒泡到DOM树上
(3)事件不断冒泡,直到DOM树的根节点上,默认情况下,根节点上就绑定了这个click事件
(4)执行由live绑定的click事件
(5)检测绑定事件的对象是否存在,判断是否需要继续执行绑定的事件。检测事件对象是通过检测
$(event.target).closest('.clickMe') 能否找到匹配的元素来实现的。
(6)通过(5)的测试,如果绑定事件的对象存在的话,就执行绑定的事件。
由于只有在事件发生的时候,live方法才会去检测绑定事件的对象是否存在,所以live方法可以实现后来新增的元素也可实现事件的绑定。相比之下,bind会在事件在绑定阶段就会判断绑定事件的元素是否存在,而且只针对当前元素进行绑定,而不是绑定到父节点上。
所以bind是只能对当前存在的元素绑定事件,l对后来新增的元素无效。live对后来新增的元素也是有效的。
最新文章
- 【swift学习笔记】四.swift使用Alamofire和swiftyJson
- Atitit 代理CGLIB&#160;动态代理&#160;AspectJ静态代理区别
- ytxgnopyvw
- POI2001 Gold mine(二叉排序树 黑书经典)
- display: inline-block 的神奇效果
- 对java框架的几点认识
- JavaScript中异步编程
- (转)mysql 无法设置外键的原因总结
- Java复习总结——String
- centos7 把终端显示改为英文/中文
- 【LeetCode-数组篇】 1 Two Sum
- .NET Core 2.1 IIS 部署 出现500.19 错误
- java实现随机产生6位数的方法总结
- 那些年读过的书《Java并发编程实战》二、如何设计线程安全类
- vue router 跳转到新的窗口方法
- Oracle报错:ORA-06508: PL/SQL: 无法找到正在调用的程序单元
- django中有外键关系两张表的相互查找方法
- mac终端下修改MySQL的编码格式--找不到my-default.cnf及my.cnf
- JS控制输入框,输入正确的价格
- Django2.0如何配置urls文件
热门文章
- Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
- [课程设计]Scrum 多鱼点餐系统(团队交流日)
- SharePoint 2013 一些小技巧
- struts_表单得到数据
- Cheatsheet: 2015 06.01 ~ 06.30
- C#中的多线程 - 同步基础
- IE6兼容性问题及IE6常见bug详细汇总
- 使用自己的CSS框架(转)
- [linux] Upgrading glibc for the GHOST Vulnerability
- Eclipse 最全快捷键