|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.03.2012, 16:23 | #1 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Сохранение переменой после выполнения функции
Ситуация следующая. Работаю с динамическим созданием/удалением событий. Необходимо удалять конкретные привязанные события.
Простейший пример логики (хоть он на jquery, но смысл понятен): Код:
Пример логики, как мне нужно: Код:
Подозреваю, что необходимо использовать замыкания для сохранения состояния переменныой-функции foo. Но как это записать никак не пойму. |
24.03.2012, 16:31 | #2 |
Форумчанин
Регистрация: 30.01.2009
Сообщений: 418
|
Код HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script language="JavaScript" src="http://jqbook.narod.ru/jquery-1.2.6.js"></script> <script> // Имеем две функции var foo = function() { alert("Раз"); }; var boo = function() { alert("Два"); }; $(document).ready(function(){ // Привязываем к одному элементу оба события $('#test').bind('mouseup',foo).bind('mouseup',boo); // Если сейчас нажать на элемент, то мы увидим два сообщения - "Раз" и "Два" }); function del() { $('#test').unbind('mouseup',foo); } function buf() { // Удаляем предыдущие привязанные события $('#test').unbind('mouseup',foo); // foo глобальна var foo100500 = function() { // foo100500 не глобальна alert("Раз 100500"); }; // Устанавливаем новые $('#test').bind('mouseup',foo100500); } </script> </head> <body> <span id="test">нажми на меня</span> <a href="#" onClick="del()">Удалить</a><br> <a href="#" onClick="buf()">Buf click</a> </body> </html> Последний раз редактировалось Lesha; 24.03.2012 в 16:38. |
24.03.2012, 20:40 | #3 | |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
|
|
25.03.2012, 11:11 | #4 |
Пользователь
Регистрация: 05.03.2011
Сообщений: 60
|
Посути вам нужно сохранять эту переменную где-то чтобы снять событие именно это. Поэтому не использовать не глобальные перменные не получится.
Чтобы получить доступ именно к глобавльной, используйте window.foo обращение. Также стоит посмотреть в сторону того, чтобы просто снимать события, типа Код:
Мои статьи по веб-программированию http://pihpi.ru
|
25.03.2012, 11:19 | #5 |
Пользователь
Регистрация: 05.03.2011
Сообщений: 60
|
Затирать событие onmouseup кстати можно и спомощью Jquery
http://kill-9.ru/jquery/jquery-bind-i-unbind/
Мои статьи по веб-программированию http://pihpi.ru
|
25.03.2012, 16:10 | #6 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
Виталий Желтяков, если честно, то я не очень понял) Несмотря на это осмелюсь предложить пару вариантов : )
Код:
Тишина – самый громкий звук
|
25.03.2012, 19:59 | #7 | ||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
Цитата:
Задачка вроде бы элементарная, но... |
||
26.03.2012, 00:41 | #8 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Всё... нашел решение. Необходимо использовать пространство имён. Для jQuery решение будет выглядеть так:
Код:
|
26.03.2012, 06:27 | #9 | |
Форумчанин
Регистрация: 30.01.2009
Сообщений: 418
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
непонятная ошибка после выполнения программы | TotKtoNado | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 16 | 30.12.2011 18:46 |
Окно после выполнения запроса | mortal2010 | Microsoft Office Access | 6 | 25.02.2011 13:18 |
Обновление таблицы после выполнения селекта | Tatochka | Microsoft Office Access | 5 | 15.01.2010 10:40 |
Сохранение полученных данных после выполнения поиска | Pirat_of | Microsoft Office Access | 1 | 14.05.2009 08:38 |
Button после выполнения ProgressBar | }{oт@бь)ч | Общие вопросы Delphi | 7 | 25.01.2009 12:33 |