bind、live、delegate、one、on区别

  • bind()实现事件绑定,但无法动态绑定事件。1.7版本以前比较受推崇
$('#foo').bind('mouseenter mouseleave',fn)
$('button').bind({
  click:fn1,
  mouseover:fn2,
  mouseout:fn3,
})
$('input').unbind();  // 删除全部事件
$('input').unbind('click');  // 删除所有的click事件
$('input').unbind('click',fn2);  // 删除fn2事件
  • live()实现动态绑定事件,不支持连续调用。live()函数在1.9版本已经删除。
$('.button').live('click',fn)    
// fn事件其实是绑定在document上,从点击的button冒泡到document上
  • delegate(),通过祖先元素来代理委派后代元素的事件绑定问题。
$('#list').delegate('li', 'click', 
function() {
 //function code here.
});
//live()是通过document元素委派,而delegate()则可以是任意的祖先节点
  • on()可以实现事件委托和事件绑定
// 委托
$('父元素').on('click',子元素,fn) 
$('父元素').off('click',子元素)
// 绑定
$('元素p').on('click',fn)
$('元素p').one('click',fn)  // 只绑定一次
$('元素p').off('click','元素p',fn)

总结 :jquery推出on()的目的有2个,一是为了统一接口,二是为了提高性能,所以从现在开始用on()替换bind(),live(),delegate()吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容