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);
};