使用jQuery卸载全部事件的思路详解
说到事件, jquery 做了不少,当然也有 data 的很多功劳,因为原生 js 不支持匿名卸载事件的,而她为了开发者好用支持了匿名的
匿名事件的思路
首先她会判断目标是否是元素或者对象,如果是元素,则在元素上打一个标识( expando )然后值是生成的一个 guid ,并在缓存对象下建立一个缓存,比如:
$.cache={ '2': { data: {}, events: {}, handle: function(){} }, }
然后会在你触发元素事件时拿元素上的标识去往缓存里的 events 里找,并会有是否委托,选择器等判断,然后最终触发,卸载的时候其实是拿缓存里的 handle 卸载的,因为是一个...
如果目标不是元素,比如是一个 window 那么她会直接往目标上添加标识,比如: window[$.expando]
其实事件跟缓存有很深的关系,她们是蕾丝~
卸载全部事件
清空标识
这里的标识包括元素上的和对象上的
$('*').add(window).each(function(){ try{ delete this[$.expando]; }catch(e){} });
ps:因为 window 不是元素,但会有一些事件,比如 scroll , resize 等
删除缓存
这里的缓存包括元素的缓存和对象缓存
window[$.expando] = {} $.cache = {};
以上所述上小编给大家介绍的使用jQuery卸载全部事件的思路详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
相关推荐
-
使用jQuery卸载全部事件的思路详解
说到事件, jquery 做了不少,当然也有 data 的很多功劳,因为原生 js 不支持匿名卸载事件的,而她为了开发者好用支持了匿名的 匿名事件的思路 首先她会判断目标是否是元素或者对象,如果是元素,则在元素上打一个标识( expando )然后值是生成的一个 guid ,并在缓存对象下建立一个缓存,比如: $.cache={ '2': { data: {}, events: {}, handle: function(){} }, } 然后会在你触发元素事件时拿元素上的标识去往缓存里的 eve
-
JQuery中DOM事件绑定用法详解
本文实例讲述了JQuery中DOM事件绑定用法.分享给大家供大家参考.具体分析如下: 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.m
-
jQuery中绑定事件的命名空间详解
在没有看到这篇 文章之前,我一直不知道原来bind也可以有命名空间.事实上,我看完这篇文章后,再去翻了一下手册,也才发现了一点点的注释.但手册也仅仅是一句话就带 过去了.没有过多的深究,或许他认为命名空间这玩意很简单,没有必要多解释? 先看手册,由于bind方法有三个参数(type,[data],fn),所以手册上这么介绍: .bind() 方法是用于往文档上附加行为的主要方式.所有JavaScript事件对象, 比如focus, mouseover, 和 resize,都是可以作为type参数
-
jQuery中的on与bind绑定事件区别实例详解
on(events,[selector],[data],fn) events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" . selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代. data:当一个事件被触发时要传递event.data给事件处理函数. fn:该事件被触发时执行的函数. false 值也可以做一个函数的简写,返回false. bind(type,[data],fn) 为每
-
jQuery validate+artdialog+jquery form实现弹出表单思路详解
功能描述: 在页面弹出一个form表单,ajax无刷新提交表单,表单需通过验证. 适用范围: 适用于在列表页面新增,修改记录. 需要加载的js文件: jquery.min.js artDialog.js iframeTools.js jquery.form.js jquery.validate.js 实现思路: 在页面中将表单放到一个隐藏的容器中,用artdialog弹出该form并对form加上jqueryvalidate验证,提交采用jqueryform ajax提交,由于都是用现成的插件写
-
jQuery动态添加.active 实现导航效果代码思路详解
代码思路: 页面4: 页面5: 代码思路: 通过jq获取你打开页面的链接 window.location.pathname: 在HTML中给自己的li加入一个ID id的命名与网址链接中的href相同 通过jq包含方法找到相对应的li给他加入active类名 然后..就没有然后了... jq代码: $(function () { var li = $(".title_ul").children("li"); for (var i = 0; i < li.l
-
JQuery手速测试小游戏实现思路详解
(-1)写在前面 我用的chrome49,jquery3.0,我得到过399分,信不信由你. (1)设计思路 两个p元素放在div里,每个p元素的高度和宽度都和div一样,当鼠标放在div上时,第一个p向上移动(更改marginTop值),当鼠标离开div上时,第一个p向下移动. (2)知识储备 a. :nth-child #lol p:nth-child(1),当前元素p相对于他的父元素的所有子元素,如果第一个元素是p则匹配成功. #lol :nth-child(1) 相当于#lol *:nt
-
JQuery在循环中绑定事件的问题详解
有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 <input type="text" name="username" id="username_1" value="" /> <input type="text" name="username" id="username_2" value="" />
-
[jQuery] 事件和动画详解
1. 事件 1.1 加载DOM 在页面加载完毕后,浏览器会通过JavaScript为DOM元素添加事件.在JavaScript代码中,通常使用window.onload方法,而在jQuery中,使用的是$(document).ready()方法.$(document).ready()方法和window.onload方法有相似的功能,但是在执行时机方面是有区别的.window.onload方法是在网页中所有的元素完全加载到浏览器后才执行,而$(document).ready()方法注册的事件处理程
-
使用jQuery,Angular实现登录界面验证码详解
写在前面: 前段事件,做了一个用ajax后台异步交互的登录功能,自己在上面加了一个验证码的功能,这个功能背后的原理挺好理解的,实现起来也十分简单,特此写波分享,,自己写的过程中踩了不少坑,这里还是照例写的详细点,大家可以做个参考,喜欢的朋友可以点个赞,或者关注一波. 最终实现的效果: 当点击登录之前,会先判断验证码是否正确(验证码可以不区分大小写,也可以区分大小写),验证码错误会刷新验证码,验证码验证之前,不会进行跨域登录操作. 整体思路. 1.取四位随机数 2.赋值到验证码的input框里.
随机推荐
- IIS防御小规模DDOS攻击实例(反向代理)
- Windows server利用批处理脚本判断端口启动tomcat的方法
- asp.net下百度的编码和解码
- thinkphp3.x中cookie方法的用法分析
- JavaScript URL参数读取改进版
- python 函数传参之传值还是传引用的分析
- python创建进程fork用法
- java SOAPHEADER的web service
- C++设计模式编程中的迭代器模式应用解析
- PHP封装函数实现生成随机的字符串验证码
- 自动杀掉占用较多CPU资源的Shell脚本
- CentOS6.5下Tomcat7 Nginx Redis配置步骤教程详解
- jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
- JS实现表单多文件上传样式美化支持选中文件后删除相关项
- 服务器 C盘 安全加强批处理(去除一些特殊软件的权限)
- android getActivity.findViewById获取ListView 返回NULL的方法
- 超好看的下拉刷新动画Android代码实现
- 关于Java异常处理的几条建议_动力节点Java学院整理
- Android 获取系统语言的实例(兼容7.0)
- Android仿360桌面手机卫士悬浮窗效果