jQuery unbind 某个function
jQuery unbind 某个function
jQuery 绑定事件
$("#a").on('click',function(){}); //--or $("#a").bind('click',function(){});
对于该绑定,可以在多个地方,绑定多次,比如
$("#a").bind('click',function(){alert(1);}); $("#a").bind('click',function(){alert(2);}); $("#a").bind('click',function(){alert(3);}); $("#a").bind('click',function(){alert(4);});
一旦这样,当点击之后,就会弹出1,2,3,4..依次4个框
new Object的时候,用了bind,,那么对于同一个jquery对象,假如new多次的时候,就会绑定多个事件
代码如下:
var selectMore = function($obj){ $obj.bind('change',function(){ alert('change'); }); }; //调用 new selectMore($('select')); new selectMore($('select')); new selectMore($('select'));
结果:第一次弹出一个,第二次弹出两个,第三次弹出三个(因为绑定了三次)
用unbind,来解除事件,使其只执行一次
代码如下:
var selectMore = function($obj){ $obj.unbind('change').bind('change',function(){ alert('change'); }); }; //调用 new selectMore($('select')); new selectMore($('select')); new selectMore($('select'));
成功.
写的类要被其他人多次调用,别人也可能绑定了change事件,不能把别人写的change事件也unbind了
用unbind('change',function)来实现,代码如下:
var selectMore = function($obj){ $obj.unbind('change',myFunc);//但是此时myFunc获取不到 var myFunc = function(){ alert('change'); }; $obj.bind('change',myFunc); };
如注释所示,此时的myFunc获取不到,所以要把该myFunc保存起来
用jQuery的data来保存数据
代码如下:
var selectMore = function($obj){ if($obj.data('myFunc')){ //这里判断的原因是:假如没有的话,执行$obj.unbind('change','')..则会移除所有绑定change的方法,把别人写的也移除了. $obj.unbind('change',$obj.data('myFunc')); //取得对应的myFunc,将其移除掉 } var myFunc = function(){ alert('change'); }; $obj.data('myFunc',myFunc); //保存数据,找到该myFunc $obj.bind('change',myFunc); };