2012-04-12 13 views
0

ich diese wunderbare Plugin gemacht habe: https://github.com/suprMax/Zepto-onPressJavaScript Behandlung von Ereignissen

die perfekt neben einem kleinen Detail funktioniert. Wenn ich die Callback-Funktion bekomme, muss ich sie zusammen mit meinem echten Event-Handler speichern, damit ich sie trennen kann, wenn jemand versucht, den Event-Handler zu entfernen und mir den ursprünglichen Callback zur Verfügung stellt. Also muss ich in der Lage sein, mehrere Schlüssel-Wert-Paare pro Element zu speichern, wobei der Schlüssel, der eine Funktion und ein Wert sein soll, ebenfalls eine Funktion ist. Und ich versuchte, genau das zu tun, aber jetzt das Skript macht dies intern:

(function(){}).toString() 

, die keine beste Idee ist, da ich falsch Event-Handler entfernen kann wegen:

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

ich es annehmen ist ein besserer Weg, genau das zu tun. Irgendwelche Vorschläge sind sehr willkommen.

Antwort

0

Die einzige sichere und performante Möglichkeit besteht darin, Ihre Funktionen in einem Array zu speichern (indexOf funktioniert perfekt, da nach den Zeigerwerten gesucht wird) und mit dem Array-Index die andere Methode auf eine andere Methode zu schieben.

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; 

} 
+0

Großartige Idee. Müssen prüfen, ob es in diesem Fall tatsächlich funktioniert – Max

+0

Funktioniert nicht. Auf diese Weise verliere ich die Beziehung zum Knoten, sehen Sie. Wenn derselbe Event-Handler verschiedenen Knoten zugeordnet ist, erhalte ich einen Fehler. – Max

Verwandte Themen