Jquery给动态添加的元素绑定事件:live() delegate() on()

给已存在的元素绑定事件时可以直接写:

$(".class a").click(function(){   })

但是对于动态生成并append()到页面上的元素来说,就不能直接用上面的方法来绑定事件了。


在Jquery 1.7之前我们可以通过live()和delegate()来解决:


1.live()方法

   语法:$(selector).live(event,data,function)

$(".class a").live("click",function(){   })

   但是在Jquery1.7版本中就不推荐使用live()方法了,在1.9版本中live()方法被移除了,用on()方法来代替。

   官方原文档说法如下:The live() method was deprecated in jQuery version 1.7, and removed in version 1.9. Use the on() method instead.



2.delegate()方法

   语法:$(selector).delegate(childSelector,event,data,function)

$(".class").delegate("a","click",function(){  })

   delegate()方法在jQuery 3.0版本中就不推荐用了,只是还没有被删除而已,推荐用on()方法来代替。

   官方原文档说法如下:The delegate() method was deprecated in version 3.0. Use the on() method instead.



现在推荐的方法是on():


3.on()方法

   语法:$(selector).on(event,childSelector,data,function,map)

$(".class").on("click","a",function(){ })

   

   继jQuery1.7之后,on()方法替代了bind(), live() 和 delegate() 方法。on()方法可以给当前元素和未来元素绑定事件。

   childSelector项是可选的,如果没有childSelector项的话,只能给被选元素(已存在的元素)绑定事件,不能给未来元素(后续动态生成的元素)绑定事件;

   用off()方法解除事件的绑定,如果绑定的事件只执行一次,则用one()方法。

   


现在知道了怎么给未来元素绑定事件,那么原理是什么呢?

给未来元素绑定事件的原理其实是事件委托,把事件绑定在未来元素的父元素上,然后通过父元素找到子元素触发该事件。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值