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);
};
 
原文地址:https://www.cnblogs.com/chenglideyueguang/p/8933658.html