jquery之 off()方法
off()函数用于移除元素上绑定的一个或多个事件的事件处理函数。
off()函数主要用于解除由on()函数绑定的事件处理函数。
该函数属于jQuery对象(实例)。
语法
jQuery 1.7 新增该函数。其主要有以下两种形式的用法:
用法一:
jQueryObject.off( [ events [, selector ] [, handler ] ] )
用法二:
jQueryObject.off( eventsMap [, selector ] )
参数
| 参数 | 描述 |
|---|---|
| events | 可选/String类型一个或多个用空格分隔的事件类型和可选的命名空间,例如"click"、"focus click"、"keydown.myPlugin"。 |
| eventsMap | Object类型一个Object对象,其每个属性对应事件类型和可选的命名空间(参数events),属性值对应绑定的事件处理函数(参数handler)。 |
| selector | 可选/String类型一个jQuery选择器,用于指定哪些后代元素可以触发绑定的事件。如果该参数为null或被省略,则表示当前元素自身绑定事件(实际触发者也可能是后代元素,只要事件流能到达当前元素即可)。 |
| handler | 可选/Function类型指定的事件处理函数。 |
off()函数将会移除当前匹配元素上为后代元素selector绑定的events事件的事件处理函数handler。
如果省略参数selector,则移除为任何元素绑定的事件处理函数。
参数selector必须与通过on()函数添加绑定时传入的选择器一致。
如果省略参数handler,则移除指定元素指定事件类型上绑定的所有事件处理函数。
如果省略了所有参数,则表示移除当前元素上为任何元素绑定的任何事件类型的任何事件处理函数。
返回值
off()函数的返回值为jQuery类型,返回当前jQuery对象本身。
实际上,off()函数的参数全是筛选条件,只有匹配所有参数条件的事件处理函数才会被移除。参数越多,限定条件就越多,被移除的范围就越小。
示例&说明
请参考下面这段初始HTML代码:
<input id="btn1" type="button" value="点击1" /><input id="btn2" type="button" value="点击2" /><a id="a1" href="#">CodePlayer</a>
首先,我们为上述button和<a>元素绑定事件,然后使用off()函数解除事件绑定,相应的代码如下:
function btnClick1(){ alert( this.value + "-1" );}
function btnClick2(){ alert( this.value + "-2" );}
var $body = $("body");
// 为所有button元素的click事件绑定事件处理函数btnClick1$body.on("click", ":button", btnClick1 );
// 为所有button元素的click事件绑定事件处理函数btnClick2$body.on("click", ":button", btnClick2 );
//为所有a元素绑定click、mouseover、mouseleave事件$body.on("click mouseover mouseleave", "a", function(event){ if( event.type == "click" ){ alert("点击事件"); }else if( event.type == "mouseover" ){ $(this).css("color", "red"); }else{ $(this).css("color", "blue"); }});
// 移除body元素为所有button元素的click事件绑定的事件处理函数btnClick2// 点击按钮,btnClick1照样执行$body.off("click", ":button", btnClick2);
// 移除body元素为所有button元素的click事件绑定的所有事件处理函数(btnClick1和btnClick2)// 点击按钮,不会执行任何事件处理函数// $body.off("click", ":button");
// 注意: $body.off("click", "#btn1"); 无法移除btn1的点击事件,off()函数指定的选择器必须与on()函数传入的选择器一致。
// 移除body元素为所有元素(包括button和<a>元素)的click事件绑定的所有处理函数// 点击按钮或链接,都不会触发执行任何事件处理函数// $("body").off("click");
// 移除body元素为所有元素的任何事件绑定的所有处理函数// 点击按钮,或点击链接或者鼠标移入/移出链接,都不会触发执行任何事件处理函数// $("body").off( );
运行代码(其他代码请自行复制到演示页面运行)
此外off()函数还可以只移除指定命名空间的事件绑定。
var $btn1 = $("#btn1");
$btn1.on("click.foo.bar", function(event){ alert("click-1");});$btn1.on("click.test", function(event){ alert("click-2");});$btn1.on("click.test.foo", function(event){ alert("click-3");});
$btn1.off("click.test"); // 移除click-2、click-3
// $btn1.off("click.foo"); // 移除click-1、click-3
// $btn1.off("click.foo.bar"); // 移除click-1
// $btn1.off("click"); // 移除所有click事件处理函数(click-1、click-2、click-3)
// $btn1.off(".foo"); // 移除所有包含命名空间foo的事件处理函数,不仅仅是click事件
jquery之 off()方法的更多相关文章
- jquery 通过submit()方法 提交表单示例
jquery 通过submit()方法 提交表单示例: 本示例:以用户注册作为例子.使用jquery中的submit()方法实现表单提交. 注:本示例仅提供了对表单的验证,本例只用选用了三个字段作为测 ...
- jquery.on()超级方法
$.on()方法是jquery1.7之后的一个超级方法,将事件绑定和事件委托整合到一个函数中去,支持绑定多个事件,并且可以绑定自定义事件.使用起来很方便. demo传送门 事件委托 首先说一下事件委托 ...
- 重写jquery的ajax方法
//首先备份下jquery的ajax方法 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success ...
- jQuery的extend方法
jq中的extend在面试中经常会被问道,今天我总结一个下有关于extend的用法三种进行对比,可能不全,希望大家指点, 用法一: $.extend({}) ,为jQuery类添加方法,可以理解为扩 ...
- jQuery中eq()方法用法实例
本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代 ...
- HTML 5 的自定义 data-* 属性和jquery的data()方法的使用
人们总喜欢往HTML标签上添加自定义属性来存储和操作数据.但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它副 ...
- 深度理解Jquery 中 offset() 方法
参考原文:深度理解Jquery 中 offset() 方法
- [转]jQuery的each方法的几种常用的用法
下面提一下jQuery的each方法的几种常用的用法 复制代码 代码如下: var arr = [ "one", "two", "three&quo ...
- jquery中$.ajax方法提交表单
function postdata(){ //提交数据函数 $.ajax({ //调用jqu ...
- JS,JQuery的扩展方法
转 http://blog.csdn.net/tuwen/article/details/11464693 //JS的扩展方法: 1 定义类静态方法扩展 2 定义类对象方法扩展 ...
随机推荐
- zw版【转发·台湾nvp系列Delphi例程】HALCON BinThreshold
zw版[转发·台湾nvp系列Delphi例程]HALCON BinThreshold unit Unit1;interfaceuses Windows, Messages, SysUtils, Var ...
- less文件的样式无法生效的一个原因,通过WEB浏览器访问服务器less文件地址返回404错误
有一种情况容易导致less文件的样式无法生效,就是部分服务器(以IIS居多)会对未知后缀的文件返回404,导致无法正常读取.less文件.解决方案是在服务器中为.less文件配置MIME值为text/ ...
- [转载] 关关采集不能生成html的问题
转载地址:http://www.pcliver.com/archives/814.html 关关不能生成html的问题: 1.关关设置的问题 2.模板标签关关不支持 排除法之后,得出我的网站是模板的问 ...
- git使用记录(新手入门)
最近参与了公司的项目开发,最后要用git来把代码添加到远程库,但是没怎么接触过git,记录一下使用的流程 首先,当然是先下载git,这个略过不提,下载完之后,在你想要保存代码的目录下,用git ini ...
- linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-100005.html linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet x ...
- win32 treeview
// 1.create treeview DWORD dwStryle = WS_VISIBLE | WS_CHILD | TVS_HASLINES|TVS_SHOWSELALWAYS/*|TVS_L ...
- java 调用grads 自动批量生成图片
将 -lbcx 命令 后面的4个参数(gs文件名.参数1.参数2.参数3) 放在单引号里面就可以执行了.
- Hibernate,JPA注解@OneToMany_Map
用例代码如下: 数据库DDL语句 1,CAT表 create table CAT ( id VARCHAR2(32 CHAR) not null, create_time TIMESTAMP(6), ...
- [ERROR][org.springframework.web.context.ContextLoader][main] Context initialization failed org.sprin
做一个SSH为基础框架的webapp小DEMO,复制了一把以前可以跑的代码,竟发现无法初始化数据源,报错如下: [ERROR][org.springframework.web.context.Cont ...
- HDU 4417:Super Mario(主席树)
http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意是:给出n个数和q个询问,每个询问有一个l,r,h,问在[l,r]这个区间里面有多少个数是小于等于h的 ...