【问题标题】:JavaScript events handlingJavaScript 事件处理
【发布时间】:2012-04-24 20:42:44
【问题描述】:

我制作了这个很棒的插件:https://github.com/suprMax/Zepto-onPress

除了一个小细节之外,它完美无缺。当我获得回调函数时,我需要将它与我的真实事件处理程序一起存储,这样当有人试图删除事件处理程序并为我提供原始回调时,我可以将其分离。所以基本上我需要能够为每个元素存储多个键值对,其中键应该是函数,值也是函数。我试图这样做,但现在脚本在内部进行:

(function(){}).toString()

这不是一个好主意,因为我可以删除错误的事件处理程序,因为:

(function(){}).toString() === (function(){}).toString(). 

我想有更好的方法来做到这一点。非常欢迎任何建议。

【问题讨论】:

    标签: javascript events zepto


    【解决方案1】:

    唯一安全且高效的方法是将您的函数存储在一个数组中(indexOf 可以完美地工作,因为它会搜索指针值)并使用数组索引将另一种方法推送到另一种方法。

    var fn1store = [];
    var fn2store = [];
    function pushFunctions(fn1, fn2) {
       var p;
       if (p = fn1store.indexOf(fn1) > -1) {
         teardown(fn2store[p]);
       } 
       p = fn1store.push(fn1) -1;
       fn2store[p] = fn2;   
    
    }
    

    【讨论】:

    • 不起作用。这样我就失去了与节点的关系,你看。如果同一个事件处理程序与不同的节点相关联,我会得到一个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多