2012-04-12 2 views
0

Я сделал этот замечательный плагин: https://github.com/suprMax/Zepto-onPressсобытия JavaScript обработки

, который работает отлично, кроме одной маленькой детали. Когда я получаю функцию обратного вызова, мне нужно сохранить его вместе с моим реальным обработчиком событий, чтобы я мог отсоединить его, когда кто-то пытается удалить обработчик событий и предоставить мне исходный обратный вызов. Поэтому в основном мне нужно иметь возможность хранить несколько пар ключ-значение для каждого элемента, где ключ, который должен быть функцией и значением, также является функцией. И я пытался сделать это, но сейчас сценарий делает это внутренне:

(function(){}).toString() 

Что не лучшая идея, так как я могу удалить неправильные обработчики событий из-за:

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

Я полагаю, это лучший способ сделать именно это. Любые предложения приветствуются.

ответ

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; 

} 
+0

Отличная идея. Нужно проверить, действительно ли он работает в этом случае. – Max

+0

Не работает. Таким образом, вы теряете связь с узлом. Если один и тот же обработчик событий связан с разными узлами, я получу ошибку. – Max

Смежные вопросы