jquery中click事件绑定及移除的几种方法总结

绑定事件与解绑事件是常用到的写法,这里总结了几种常见的绑定事件与解绑事件的方法。

绑定click事件

一:直接在html标签里添加事件-----HTML元素行间事件(这种写法是JavaScript原生事件)

<input id="btn" type="button" value="点我" onclick="test();" />
<script>
	function test() {
	    alert("行间事件");
	}
</script>

缺点:html与js紧密耦合

二:使用jq的click方法绑定

$("#btn").click(function(){
     alert("jquery使用click绑定事件");
})

三:使用jq的bind方法绑定

$("#btn").bind("click",function(){
   alert("jquery使用bind绑定事件");
})

四:使用jq的on方法绑定

$("#btn").on("click",function(){
    alert("jquery使用on绑定事件");
})

五:使用jq的可绑定动态元素的on方法绑定

 $("body").on("click","#btn", function () {
      alert("jquery使用on可绑定动态元素事件");
 })

点击按钮,这五个事件都会执行,执行顺序:1>2=3=4>5
其中行间事件onclick这种写法的事件最先触发,其次是监听事件click方法绑定,这种写法和写法三的on方法、方法四的bind方法是相同的,他们三者间的顺序取决于代码的顺序,谁在前那么谁就先绑定,方法五也是使用了on方法,但是这种写法可以给动态元素绑定事件,比如我们通过发送服务器请求动态加载到页面的元素,加载后的元素默认是没有绑定事件的,但是使用方法五可以成功为这种动态元素绑定事件,这种写法其实是发生的事件委托,监听父元素body,然后代替子元素执行click事件,所以是执行顺序在前面四种后。

移除click事件

方式一的移除:

<input id="btn" type="button" value="点我" onclick="test();" />
function test() {
    alert("行间事件");
}

这种写法其实可以理解为:

<input id="btn" type="button" value="点我" />
/*点击的时候执行函数*/
document.getElementById("btn").onclick = test;
/*定义函数*/
function test() {
    alert("行间事件");
}

那么移除事件就很简单了,一句代码搞定:

document.getElementById("btn").onclick = null;

或者使用jq的方法移除:

$("#btn").prop("onclick",null);

若使用多种写法绑定多个click事件则移除所有的click事件:

 $("#btn").prop("onclick",null).off("click");

写法二、三、四的移除:

$("#btn").on("click",function(){
	alert("jquery使用on绑定事件");
})
$("#btn").click(function(){
	alert("jquery使用click绑定事件");
})
$("#btn").bind("click",function(){
	alert("jquery使用bind绑定事件");
})

直接使用unbind方法

$("#btn").unbind("click");

或者使用off方法:

$("#btn").off("click");
写法五使用on绑定动态元素的移除:
这种写法使用unbind无效,因为它绑定的对象是父元素body,那么需要用配对的函数off移除
$("body").off("click","#btn");

需要注意的是:事件委托写法的解绑的元素需要与事件绑定的目标元素一致(即案例中body,#btn需要一一对应),否则不生效。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品;off() 方法是 unbind()、die() 和 undelegate() 方法的新的替代品。使用起来更方便,推荐使用。

其中关于off函数的参数说明如下:

/*如果不传参,会移除所有的事件*/
$("#btn").off();
/*如果传递一个参数,会移除这个类型的所有事件*/
$("#btn").off('click');
/*如果传递两个参数,则移除这两个参数指定的事件*/
$("#btn").off('click',test);

————————————————
版权声明:本文为CSDN博主「caicai1171523597」的原创文章。
原文链接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值