假设有元素A,B,C,其中A和B都有class属性cls,如果在页面加载完成时,给具有class属性为cls的元素绑定某一事件,例如click,执行事件时调用alert。也就是说,页面加载完成后A和B都会被绑定事件,但C没有绑定。绑定事件相当于给A和B添加了一个click属性,显然此时C是没有该属性的。然后你给C添加了cls的class,但此时你做的事情仅仅是添加class,而没有绑定事件,所以,尽管C有cls属性,但它没有绑定事件,绑定事件和添加class是两件事,如果只做了一个,不会影响另一个的。





再比如说,你给A和B绑定事件后,再去掉A的cls的class,此时A没有cls,但事件应经绑定了,A的click事件依然有效。它不会因为cls的移除而取消已经绑定的事件。





如果你想要后续增加class的元素能够自动绑定事件,可以使用jquery的live方法







$('.class').live("click",function(){

//TODO

});

jQuery中.bind() .live() .delegate() .on()的区别点击打开链接 jQuery的.bind()、.live()和.delegate()之间区别

bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数

$("a").bind("click",function(){alert("ok");});

live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的

$("a").live("click",function(){alert("ok");});

delegate(selector,[type],[data],fn) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数

$("#container").delegate("a","click",function(){alert("ok");})

on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数

差别:

.bind()是直接绑定在元素上

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.7版本整合了之前的三种方式的新事件绑定机制

最新文章

  1. C算法编程题(二)正螺旋
  2. Yii2的urlManager URL美化
  3. Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个
  4. 大数据——sparksql
  5. 第03篇. 标准Web项目Jetty9内嵌API简单启动
  6. 将CMD内的显示内容输出到txt文件
  7. Android中的webview的进度条
  8. SQL Server dbcc checkdb 做了什么。
  9. linux之SQL语句简明教程---Alias
  10. 左右xcode的重构选项的一些理解
  11. java 得到以后的日期
  12. Java-Maven(三):Maven坐标、Maven仓库、Maven生命周期
  13. 算法(第四版)C# 习题题解——1.4
  14. opencv 进行图像的花屏检测(模糊检测)
  15. [PHP] 数据结构-从尾到头打印链表PHP实现
  16. 如何使用百度bae部署web项目
  17. SpringMVC_HelloWorld_01
  18. python 异常类型----后期需理解调整
  19. openstack热迁移和冷迁移
  20. Oracle查看字符集

热门文章

  1. Solidworks拖动装配体的时候物资动力有什么用
  2. Python 可视化Twitter中指定话题中Tweet的词汇频率
  3. TSRC挑战赛:WAF之SQL注入绕过挑战实录
  4. SQL EXISTS 与 IN
  5. Oracle 复制表创建的sql语句
  6. C# Winform 运行异常 CefSharp.core.dll 找不到指定的模块
  7. mybatis性能优化之降低数据库连接
  8. XTUOJ 1176 I Love Military Chess(模拟)
  9. ios面试基础
  10. Oracle SQL 查询优化.Part4