首页  >  文章  >  web前端  >  jquery one函数方法实现

jquery one函数方法实现

巴扎黑
巴扎黑原创
2017-06-25 11:13:041817浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn