jQuery的绑定与解绑方法

5 篇文章 0 订阅
2 篇文章 0 订阅

一、bind()与unbind()

I、bind():绑定

1、定义

规定向被选元素添加的一个或多个事件处理程序,以及当事件发生时运行的函数。

2、语法

$(selector).bind(event,data,function)

3、参数

参数描述
event必需。规定添加到元素的一个或多个事件。由空格分隔多个事件。必须是有效的事件。如click(点击)、change(改变)、mouseover(鼠标移入/鼠标浮上)等事件
data可选。规定传递到函数的额外数据。
function必需。规定当事件发生时运行的函数。

4、案例

(1)绑定单一事件

给id为trigger的元素绑定click事件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
	 <div style="height: 300px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">绑定事件</a>
	   <script type="text/javascript">
		    $("#trigger").bind('click',function(){
		        alert("哇哈哈哈");
		    });   
	  </script>
  </body>
</html>

效果:点击“绑定事件”后出现弹窗
在这里插入图片描述

(2)绑定多个事件

给id为trigger的元素同时绑定click和mouseover事件【多个事件之间用空格隔开】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
	 <div style="height: 300px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">绑定事件</a>
	   <script type="text/javascript">
		    $("#trigger").bind('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
	  </script>
  </body>
</html>

效果:鼠标移入与点击“绑定事件”后均会出现弹窗
在这里插入图片描述

II、unbind():解绑

1、定义

规定从指定元素上删除的一个或多个事件处理程序。如果没有规定参数,unbind() 方法会删除指定元素的所有事件处理程序ubind() 适用于任何通过 jQuery 附加的事件处理程序。

2、语法

$(selector).unbind(event,function)

3、参数

参数描述
event可选。规定删除元素的一个或多个事件,由空格分隔多个事件值。如果只规定了该参数,则会删除绑定到指定事件的所有函数。
function可选。规定从元素的指定事件取消绑定的函数名。

4、案例

(1)解绑具体事件

解绑“鼠标移入”事件:执行“解绑事件”后,“鼠标移入”事件失效,但“点击”事件依然有效

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
	<div style="height: 300px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">绑定事件</a>
	    <a href="#" onclick="untri()">解绑事件</a>
	   <script type="text/javascript">
		    $("#trigger").bind('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
		    function untri(){
		    	$("#trigger").unbind('mouseover'); 
		    	alert("已解绑");
		    }
	  </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入“绑定事件”时没反应,但点击“绑定事件”时出现弹窗
在这里插入图片描述

(2)解绑全部事件

解绑全部事件:执行“解绑事件”后,“鼠标移入”与“点击”事件均失效

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
	 <div style="height: 300px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">绑定事件</a>
	    <a href="#" onclick="untri()">解绑事件</a>
	   <script type="text/javascript">
		    $("#trigger").bind('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
		    function untri(){
		    	$("#trigger").unbind(); 
		    	alert("已解绑全部");
		    }   
	  </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入和点击“绑定事件”时均没反应
在这里插入图片描述

二、live()与die()

I、live():绑定

1、定义

规定
向被选元素添加的一个或多个事件处理程序,以及当事件发生时运行的函数。live() 方法在 jQuery 版本 1.7 中被废弃,在版本 1.9 中被移除。

2、语法

$(selector).live(event,data,function)

3、参数

参数描述
event必需。规定添加到元素的一个或多个事件。由空格分隔多个事件。必须是有效的事件。如click(点击)、change(改变)、mouseover(鼠标移入/鼠标浮上)等事件
data可选。规定传递到函数的额外数据。
function必需。规定当事件发生时运行的函数。

4、案例

此处可发现,我多引用了一个js文件,这也是已废弃的方法为何还能使用的原因(点击了解详情)

(1)绑定单一事件

给id为trigger的元素绑定click事件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
     <script src="js/jquery-migrate-1.1.1.min.js" type="text/javascript"></script>
	 <div style="height: 300px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">绑定事件</a>
	   <script type="text/javascript">
		    $("#trigger").live('click',function(){
		        alert("哇哈哈哈");
		    });   
	  </script>
  </body>
</html>

效果:点击“绑定事件”后出现弹窗
在这里插入图片描述

(2)绑定多个事件

给id为trigger的元素同时绑定click和mouseover事件【多个事件之间用空格隔开】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
     <script type="text/javascript" src="js/jquery-migrate-1.1.1.min.js"></script>
	   <div style="height: 300px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">避免点击事件的多次触发</a>
	   <script type="text/javascript">
		    $("#trigger").live('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
	  </script>
  </body>
</html>

效果:鼠标移入与点击“绑定事件”后均会出现弹窗
在这里插入图片描述

II、die():解绑

1、定义

规定从指定元素上删除的一个或多个事件处理程序。如果没有规定参数,unbind() 方法会删除指定元素的所有事件处理程序

2、语法

$(selector).die(event,function)

3、参数

参数描述
event可选。规定删除元素的一个或多个事件,由空格分隔多个事件值。如果只规定了该参数,则会删除绑定到指定事件的所有函数。
function可选。规定从元素的指定事件取消绑定的函数名。

4、案例

(1)解绑具体事件

解绑“鼠标移入”事件:执行“解绑事件”后,“鼠标移入”事件失效,但“点击”事件依然有效

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
     <script src="js/jquery-migrate-1.1.1.min.js" type="text/javascript"></script>
</style>
	<div style="height: 500px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">绑定事件</a>
	    <a href="#" onclick="untri()">解绑事件</a>
	   <script type="text/javascript">
		    $("#trigger").live('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
		    function untri(){
		    	  $("#trigger").die('mouseover'); 
		    	  alert("已解绑");
		    }
		   
	  </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入“绑定事件”时没反应,但点击“绑定事件”时出现弹窗
在这里插入图片描述

(2)解绑全部事件

解绑全部事件:执行“解绑事件”后,“鼠标移入”与“点击”事件均失效

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
     <script src="js/jquery-migrate-1.1.1.min.js" type="text/javascript"></script>
</style>
	<div style="height: 500px;width: 200px;background-color: green"></div>
	   <a href="#" id="trigger">绑定事件</a>
	    <a href="#" onclick="untri()">解绑事件</a>
	   <script type="text/javascript">
		    $("#trigger").live('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
		    function untri(){
		    	  $("#trigger").die(); 
		    	  alert("已解绑全部");
		    }
	  </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入和点击“绑定事件”均无效果
在这里插入图片描述

三、delegate()与undelegate()

I、delegate():绑定

1、定义

为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。适用于当前或未来的元素(比如由脚本创建的新元素,即动态生成的元素)。

2、语法

 $(selector).delegate(childSelector,event,data,function) 

3、参数

参数描述
childSelector必需。规定要添加事件处理程序的一个或多个子元素。
event必需。规定添加到元素的一个或多个事件。由空格分隔多个事件。必须是有效的事件。如click(点击)、change(改变)、mouseover(鼠标移入/鼠标浮上)等事件
data可选。规定传递到函数的额外数据。
function必需。规定当事件发生时运行的函数。

4、案例

(1)绑定单一事件

给div下的a标签绑定click事件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;">
	   		 <a href="#" id="trigger">绑定事件</a>
	    </div>
	    <script type="text/javascript">
	    	$('div').delegate('a','click',function(){
		        alert("哇哈哈哈");
		    });
	   </script>
  </body>
</html>

效果:点击“绑定事件”后出现弹窗
在这里插入图片描述

(2)绑定多个事件

给div下的a标签同时绑定click和mouseover事件【多个事件之间用空格隔开】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;">
	   		 <a href="#" id="trigger">绑定事件</a>
	    </div>
	    <script type="text/javascript">
	    	$('div').delegate('a','click mouseover',function(){
		        alert("哇哈哈哈");
		    });
	   </script>
  </body>
</html>

效果:鼠标移入与点击“绑定事件”后均会出现弹窗
在这里插入图片描述

II、undelegate():解绑

1、定义

删除由 delegate() 方法添加的一个或多个事件处理程序。必须是由delegate绑定的方法才有效噢

2、语法

$(selector).undelegate(selector,event,function)

3、参数

参数描述
selector可选。规定需要删除事件处理程序的选择器。
event可选。规定需要删除处理函数的一个或多个事件类型。
function可选。规定要删除的具体事件处理函数。

4、案例

(1)解绑具体事件

解绑“鼠标移入”事件:执行“解绑事件”后,“鼠标移入”事件失效,但“点击”事件依然有效

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;">
	   		 <a href="#" id="trigger">绑定事件</a>
	    </div>
	    <a href="#" onclick="untri()">解绑事件</a>
	    <script type="text/javascript">
	    	$('div').delegate('a','click mouseover',function(){
		        alert("哇哈哈哈");
		    });
			
	    	 function untri(){
	    		 $('div').undelegate('a','click'); 
	    		 alert("已解绑全部事件");
	    	} 
	   </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入“绑定事件”时没反应,但点击“绑定事件”时出现弹窗
在这里插入图片描述

(2)解绑全部事件

解绑全部事件:执行“解绑事件”后,“鼠标移入”与“点击”事件均失效
注意解绑的格式,不能写子元素,且会解绑所有子元素事件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;">
	   		 <a href="#" id="trigger">绑定事件</a>
	    </div>
	    <a href="#" onclick="untri()">解绑事件</a>
	    <script type="text/javascript">
	    	$('div').delegate('a','click mouseover',function(){
		        alert("哇哈哈哈");
		    });
	    	 function untri(){
	    		 $('div').undelegate(); 
	    		 alert("已解绑全部事件");
	    	} 
	   </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入和点击“绑定事件”均无反应
在这里插入图片描述

四、on()与off()

I、on():绑定

自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。

1、定义

被选元素或其子元素上添加一个或多个事件处理程序。使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素,即动态生成的元素)。超级厉害的方法,元素本身与其子元素均适用

2、语法

 $(selector).on(event,childSelector,data,function) 

3、参数

参数描述
event必需。规定要从被选元素添加的一个或多个事件或命名空间。由空格分隔多个事件值,也可以是数组。必须是有效的事件。如click(点击)、change(改变)、mouseover(鼠标移入/鼠标浮上)等事件
childSelector可选。规定只能添加到指定的子元素上的事件处理程序(且不是选择器本身,比如已废弃的 delegate() 方法)。
data可选。规定传递到函数的额外数据。
function必需。规定当事件发生时运行的函数。

4、案例

由于涉及到当前与子元素和单一和多个事件情况,案例详情太多,不再一一列举,具体案例可参考以上进行照葫芦画瓢,此处仅做2种情况演示,如下所示

(1)绑定单一事件

给div下的a标签绑定click事件【注意语法格式噢,先方法再元素】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;">
	   		 <a href="#" id="trigger">绑定事件</a>
	    </div>
	    <script type="text/javascript">
	    	$('div').on('click','a',function(){
		        alert("哇哈哈哈");
		    });
	   </script>
  </body>
</html>

效果:点击“绑定事件”后出现弹窗
在这里插入图片描述

(2)绑定多个事件

给id为trigger的元素同时绑定click和mouseover事件【多个事件之间用空格隔开】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;"></div>
		<a href="#" id="trigger">绑定事件</a>
	    <script type="text/javascript">
	    	$('#trigger').on('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
	   </script>
  </body>
</html>

效果:鼠标移入与点击“绑定事件”后均会出现弹窗
在这里插入图片描述

II、off():解绑

自 jQuery 版本 1.7 起,off() 方法是 unbind()、die() 和 undelegate() 方法的新的替代品。该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。

1、定义

通常用于移除通过 on() 方法添加的事件处理程序。只能是on绑定的方法才有效噢

2、语法

 $(selector).off(event,selector,function(eventObj),map) 

3、参数

参数描述
event必需。规定要从被选元素移除的一个或多个事件或命名空间。由空格分隔多个事件值。必须是有效的事件。
selector可选。规定添加事件处理程序时最初传递给 on() 方法的选择器。
function(eventObj)可选。规定当事件发生时运行的函数。
map规定事件映射 ({event:function, event:function, …}),包含要添加到元素的一个或多个事件,以及当事件发生时运行的函数。

4、案例

由于涉及到当前与子元素和单一和多个事件情况,案例详情太多,不再一一列举,具体案例可参考以上进行照葫芦画瓢,此处仅做2种情况演示,如下所示

(1)解绑具体事件

解绑div下a标签的“鼠标移入”事件:执行“解绑事件”后,“鼠标移入”事件失效,但“点击”事件依然有效【注意语法格式噢,先方法再元素】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;">
	   		 <a href="#" id="trigger">绑定事件</a>
	    </div>
	    <a href="#" onclick="untri()">解绑事件</a>
	    <script type="text/javascript">
	    	$('div').on('click','a',function(){
		        alert("哇哈哈哈");
		    });
	    	 function untri(){
	    		 $('div').off('click','a');
		    	  alert("已解绑div下a标签的点击事件");
		    } 
	   </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入“绑定事件”时没反应,但点击“绑定事件”时出现弹窗
在这里插入图片描述

(2)解绑全部事件

解绑全部事件:执行“解绑事件”后,“鼠标移入”与“点击”事件均失效

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>防止多次点击</title>
     	<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
		<div style="height: 300px;width: 200px;background-color: pink;padding:50px;"></div>
		<a href="#" id="trigger">绑定事件</a>
		<a href="#" onclick="untri()">解绑事件</a>
	    <script type="text/javascript">
	    	$('#trigger').on('click mouseover',function(){
		        alert("哇哈哈哈");
		    });
	    	function untri(){
	    		 $('#trigger').off();
		    	  alert("已解绑trigger的全部事件");
		    } 
	   </script>
  </body>
</html>

效果:执行“解绑事件”后,鼠标再次移入和点击“绑定事件”时均无效
在这里插入图片描述

总结

以上就是jQuery绑定与解绑事件的4种方法,自 jQuery 版本 1.7 起,on() 和 off() 方法是在元素上添加和移除事件处理程序的首选方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值