时间:2021-07-01 10:21:17 帮助过:2人阅读
最初的方法是这样的:
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函数方法实现的详细内容,更多请关注Gxl网其它相关文章!