Удаление обработчика события
Всем привет! Парюсь с событиями.
Имею: 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, время: 05:32. |