jQuery中live()的多次重复绑定

作者:沙师弟时间:2012-05-14
最近用jQuery写一个删除功能,用了jQuery的live()方法,但是出现重复绑定事件的情况,如,当点击一个按钮时,此按钮所绑定的事件会并执行n遍。 我的js是这样写的:
var _table = jQuery('#table');
var _mun   = _table.find('tr').size()-1;
jQuery('.deleteWorkFlow').live('click',function(){
	var _mun = _table.find('tr').size()-1;
	if( _mun > 2 ){
		jQuery("#tbody tr:last").remove();
	}else{
		return false;
	}
});
本来理想的效果应该,当_mun>2的情况,#tbody的最后一个tr会被删除,但是当我点击deleteWorkFlow的时候,就把所有的tr删除,出现重复执行的情况。遇到这种情况反复了看了好几遍代码都找不到原因,百度上找了好久,可能是live()的问题,终于让我找到jQuery的die()方法。 die()是jQuery1.3之后才出现的方法,与live()正好完全相反,有兴趣的可以查找jQuery的api,查看具体的介绍。于是我就在live()前加上die()问题就解决了:
var _table = jQuery('#table');
var _mun   = _table.find('tr').size()-1;
jQuery('.deleteWorkFlow').die().live('click',function(){
	var _mun = _table.find('tr').size()-1;
	if( _mun > 2 ){
		jQuery("#tbody tr:last").remove();
	}else{
		return false;
	}
});