Удаление обработчика события
Всем привет! Парюсь с событиями.
Имею:
var myhandler = function(param1, param2)
{
...
}
some_parent()
{
...
addhandler(object, 'click', function(){ myhandler() } );
}
Возникает вопрос как удалить данный обработчик? Косяк состоит в том что удалить его легко если биндить его на событие по имени функции, но так как функция принимает входящие параметры - я так сделать не могу. Товарищи знатоки, посоветуйте решение пожалуйста. Заранее спасибо! |
Что за addhandler??? Вообще, ссылку на функцию можно получить из arguments.callee.
|
стандартный обработчик в обёртке для кросбраузерности обернул.
можно пример показать? |
Примерно так:
addhandler(object, 'click', function(){
myhandler()
removehandler( this, event.type, arguments.callee );
} );
Только с this в ie есть проблемы. |
А как-то подругому можно?
|
А чем так не нравится?
|
несколько косо будет работать если биндить, скажем, onmousemove - т.к. на каждое движение курсора он будет биндить и тутже снимать бинд. А по стандарту он должен один раз забиндить и в конце процедуры снять бинд :) о как
|
Проблема решена - сам надумал. Всем спасибо!
window_floating_move.ivf_offset = ivf_offset;
window_floating_move.ivf_target_object = ivf_target;
engine_main.set_handler( document, 'mousemove', window_floating_move );
var window_floating_move = function(ivf_event)
{
var funcObj = arguments.callee
ivf_target_object = funcObj.ivf_target_object;
ivf_offset = funcObj.ivf_offset;
...
}
|
belkir,
А вот "это" типа не косо?! |
| Часовой пояс GMT +3, время: 01:32. |