0

この素晴らしいプラグインを作成しました: https://github.com/suprMax/Zepto-onPress

これは、細部に加えて完璧に機能します。コールバック関数を取得したら、それを実際のイベント ハンドラーと一緒に保存する必要があります。これにより、誰かがイベント ハンドラーを削除して元のコールバックを提供しようとしたときに、それを切り離すことができます。したがって、基本的には、キーが関数であると想定され、値も関数である要素ごとに複数のキーと値のペアを格納できる必要があります。そして、私はそれをやろうとしましたが、現在、スクリプトはこれを内部的に行います:

(function(){}).toString()

次の理由により、間違ったイベントハンドラーを削除できるため、これは最善のアイデアではありません。

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

それを行うためのより良い方法があると思います。どんな提案でも大歓迎です。

4

1 に答える 1

0

唯一の安全でパフォーマンスの高い方法は、関数を配列に格納し (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;   

}
于 2012-04-12T13:41:34.423 に答える