• 欢迎关注我的微信公众号“ frontEnd_Developer ” 右边扫描关注 --->>

移除jquery绑定的click历史事件

JavaScript 神棍 726℃ 0评论

事件原由:


function promptImage(obj,callback){
  console.log(obj.a)
  $('#showImage').modal({backdrop:false}).on('hidden.bs.modal', function (e) {
    $('#showImage').modal('hide')
  })
      .find('.submit').click(function(event){
        $("#showImage").modal('hide')
        
        var imgs = $("#showImage .up-thumbnail img")
        callback({
          url:imgs.attr('src')
        })
        //解除历史绑定的 CLICK BUG
        //$(this).unbind('click')
  })
}
function clicks(){
var i = 0;
promptImage({a:i},function(res){
    i++
    console.log("i="+i)
  //do 
  })
}

clicks()

当多次调用这个事件之后,你会发现这个 i 一直在增加 并没有被清除!

移除事件

unbind(type [,data])     //data是要移除的函数

$(‘#btn’).unbind(“click”); //移除click

$(‘#btn’).unbind(); //移除所有
对于只需要触发一次的,随后就要立即解除绑定的情况,用one()

$(‘#btn’).one(“click”,function(){…….});
模拟操作

可以用trigger()方法完成模拟操作。

$(‘#btn’).trigger(“click”);
$(‘#btn’).click();

触发自定义事件

$(‘#btn’).bind(“myclick”,function(){….});

$(‘#btn’).trigger(“myclick”);
传递数据

trigger(type [,data])

$(‘#btn’).bind(“myclick”,function(event,message1,message2){………..});

$(‘#btn’).trigger(“myclick”,[“传给message1″,”传给message2”]);

执行默认操作
$(“input”).trigger(“focus”);

//不仅会触发input元素绑定的focus事件,还会触发默认操作——得到焦点。

$(“input”).triggerHandler(“focus”);

//只触发绑定事件,不执行浏览器默认操作

其他用法

绑定多个事件类型

$(“div”).bind(“mouseover mouseout”,function(){…..});

添加事件命名空间

$(“div”).bind(“click.plugin”,function(){……});

在所绑定的世界类型后面添加命名空间,这样在删除事件时只需要指定命名空间即可。

$(“div”).unbind(“.plugin”);   //删除空间内的事件

$(“div”).trigger(“click!”); //触发所以不包含在命名空间中的click方法

如果包含在命名空间的也要触发:

$(“div”).trigger(“click”);

部分转自:http://www.cnblogs.com/zhangq723/archive/2011/04/02/2003358.html

 

转载请注明:Falost的小窝 » 移除jquery绑定的click历史事件

如果你觉得这篇文章不错或者对你有帮助,想请我喝一杯咖啡,可以打赏
喜欢 (19)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址