jQuery中on、off和one
jQuery绑定事件和解绑的方法有三组共六个(绑定事件bind()和unbind(),事件委托.live()和.die()还有delegate()和undelegate())。由于这三组的共存可能会造成一定的混乱,为此 jQuery1.7以后推出了.on()和.off()方法彻底摒弃前面三组。
用on()替代bind()方式:
$('.button').on('mouseover mouseout',function(){});//替代.bind()方式,并绑定一个或多个事件
$('form').on('submit', function () {return false;}); //替代.bind()方式,阻止默认行为并取消冒泡
$('form').on('submit', false); //替代.bind()方式,阻止默认行为并取消冒泡的简写
用off()替代unbind()方式,移除事件
$('.button').off('click');
on()替代live()和delegate(),事件委托
$('#box').on('click', '.button', function (){$(this).clone().appendTo('#box');});
off()替代die()和undelegate(),取消事件委托
$('#box').off('click', '.button');
不管是.bind()还是.on(),绑定事件后都不是自动移除事件的,需要通过.unbind()和.off()来手工移除。jQuery 提供了.one()方法,绑定元素执行完毕后自动移除事件,可以方法仅触发一次的事件。
$('.button').one('click', function(){alert('one仅触发一次!');}); //绑定事件只触发一次
$('#box).one('click','click',function(){});//委托事件只触发一次