jquery one方法实现
2015-12-17 11:32
771 查看
jquery中有一个方法:one,用途是事件绑定只执行一次就自动解除绑定。源码看了很久头晕,决定自己搞一个。研究了很久,用原生的模拟了一次。我用的名字是once。
最初的方法是这样的:
这种方法是可以的,但有个问题,事件处理函数依然存在,只是什么都不执行而已,久而久之会变得十分臃肿。
替代方法变成在处理函数里解除本身,但如果用匿名函数的话,会陷入可怕的无限递归。
用变量存储的话就能解决了。
闲暇娱乐之作,希望能帮到一些人。
最初的方法是这样的:
function once(dom, event, callback) { // 这一步是为了避免修改形参 var temp = callback; dom.addEventListener(event, function() { if(temp) temp(); temp = null; }) }
这种方法是可以的,但有个问题,事件处理函数依然存在,只是什么都不执行而已,久而久之会变得十分臃肿。
替代方法变成在处理函数里解除本身,但如果用匿名函数的话,会陷入可怕的无限递归。
用变量存储的话就能解决了。
function once(dom, event, callback) { var handle = function() { callback(); dom.removeEventListener(event, handle); } dom.addEventListener(event, handle) }
闲暇娱乐之作,希望能帮到一些人。
相关文章推荐
- jQuery+CSS实现滑动的标签分栏切换效果
- 【jQuery】使用each()方法遍历元素
- 使用jquery.qrcode生成二维码,在线演示,下载源码
- 【jQuery】使用wrap()和wrapInner()方法包裹元素和内容
- jquery validate 表单验证详解 jquery.validate.js用法详解
- 【jQuery】replaceWith()和replaceAll()
- jquery 工作笔记,不断整理中..
- 【jQuery】使用clone()方法复制元素
- 【jQuery】使用before()和after()在元素前后插入内容
- jQuery选择器用法实例详解
- 【jQuery】removeAttr(name)和removeClass(class)
- 【jQuery】addClass()和css()
- jquery checkbox操作
- 深入分析jQuery的ready函数是如何工作的(工作原理)
- 【jQuery】html()和text()的区别
- 【jQuery】使用attr()方法控制元素的属性
- 【元素的查找】js和jquery方法查找dom元素
- jQuery validate基本原则
- 高效的jquery数字滚动特效
- jQuery 选择器总结