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 one函数方法实现的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号