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对后来新增的元素也是有效的。

最新文章

  1. 【swift学习笔记】四.swift使用Alamofire和swiftyJson
  2. Atitit 代理CGLIB&#160;动态代理&#160;AspectJ静态代理区别
  3. ytxgnopyvw
  4. POI2001 Gold mine(二叉排序树 黑书经典)
  5. display: inline-block 的神奇效果
  6. 对java框架的几点认识
  7. JavaScript中异步编程
  8. (转)mysql 无法设置外键的原因总结
  9. Java复习总结——String
  10. centos7 把终端显示改为英文/中文
  11. 【LeetCode-数组篇】 1 Two Sum
  12. .NET Core 2.1 IIS 部署 出现500.19 错误
  13. java实现随机产生6位数的方法总结
  14. 那些年读过的书《Java并发编程实战》二、如何设计线程安全类
  15. vue router 跳转到新的窗口方法
  16. Oracle报错:ORA-06508: PL/SQL: 无法找到正在调用的程序单元
  17. django中有外键关系两张表的相互查找方法
  18. mac终端下修改MySQL的编码格式--找不到my-default.cnf及my.cnf
  19. JS控制输入框,输入正确的价格
  20. Django2.0如何配置urls文件

热门文章

  1. Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
  2. [课程设计]Scrum 多鱼点餐系统(团队交流日)
  3. SharePoint 2013 一些小技巧
  4. struts_表单得到数据
  5. Cheatsheet: 2015 06.01 ~ 06.30
  6. C#中的多线程 - 同步基础
  7. IE6兼容性问题及IE6常见bug详细汇总
  8. 使用自己的CSS框架(转)
  9. [linux] Upgrading glibc for the GHOST Vulnerability
  10. Eclipse 最全快捷键