Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.08.2012, 18:15
Новичок на форуме
Отправить личное сообщение для Deliaz Посмотреть профиль Найти все сообщения от Deliaz
 
Регистрация: 09.07.2011
Сообщений: 5

Снова вернуть обработчик, on(), off()
Привет!
Не могу сообразить, как придумать краткое решение проблемы.
Суть: есть элемент, на него повешен обработчик, который должен работать с самого начала.
По клику на .n1 должно произойти единожды событие mouseenter, и обработчик надо снять.
Обработчик возвращается вновь, по клику на .n2.

Грубая модель ситуации: Есть переключатель, который включает или выключает анимацию на сайте. Если анимация отключается, то все занимает "отработанное" положение. Если тут же ее включают, все возвращается к исходным положениям.

Думал над решениями, но какие-то длинные, хочу лаконично.

Фрагмент кода
$(".cblocks").on({
	mouseenter:
		function() {
		// код...
	},
	mouseleave: 
		function () {
		//еще код...
	}
});


$(".n1").click(function() {
	$(".cblocks").trigger("mouseenter");
	$(".cblocks").off();
});
	
$(".n2").click(function() {
	$(".cblocks").trigger("mouseleave");
	//как вернуть ? :(
});


С событиями работаю первый раз, поэтому возникают трудности.
Спасибо (:
Ответить с цитированием
  #2 (permalink)  
Старый 11.08.2012, 18:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Deliaz
По клику на .n1 должно произойти единожды событие mouseenter,
http://jquery-docs.ru/Events/one/#typedatafn
Ответить с цитированием
  #3 (permalink)  
Старый 11.08.2012, 18:50
Новичок на форуме
Отправить личное сообщение для Deliaz Посмотреть профиль Найти все сообщения от Deliaz
 
Регистрация: 09.07.2011
Сообщений: 5

Сообщение от Deff Посмотреть сообщение
http://jquery-docs.ru/Events/one/#typedatafn
Не совсем стыкуется с моей моделью.
Я может запутал словом "единожды". Имел ввиду что при клике на .n1 (отключение анимации) элементы выполнять действия как в mouseenter, и застынут. И не будут обрабатывать ни маусэнтер ни мауслив. Но как только клик на .n2 (включение анимации) - все работает снова.
Ответить с цитированием
  #4 (permalink)  
Старый 11.08.2012, 18:53
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Deliaz,
Тады on и unbind http://jquery-docs.ru/Events/unbind/#typefn

(Для старых версий ниже 1.7.2 был еще и bind - установщик
в новой всё ставицо через on
Ответить с цитированием
  #5 (permalink)  
Старый 11.08.2012, 19:23
Новичок на форуме
Отправить личное сообщение для Deliaz Посмотреть профиль Найти все сообщения от Deliaz
 
Регистрация: 09.07.2011
Сообщений: 5

Сообщение от Deff Посмотреть сообщение
Deliaz,
Тады on и unbind http://jquery-docs.ru/Events/unbind/#typefn

(Для старых версий ниже 1.7.2 был еще и bind - установщик
в новой всё ставицо через on
Сделал. Работает.
$(".cblocks").on({mouseenter:ShowIt,mouseleave:HideIt});

	$(".n1").click(function() {
		$(".cblocks").trigger("mouseenter");
		$(".cblocks").off();
	});
	
	$(".n2").click(function() {
		$(".cblocks").on({mouseenter:ShowIt,mouseleave:HideIt});
		$(".cblocks").trigger("mouseleave");
	});


Функции ессно описаны.
Это действительно оптимальный код? А то концентрация индусских решений у меня уже превышена, стоит бы оптимизировать..
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как снять обработчик с очередью FanAizu jQuery 0 11.02.2012 19:28
Обработчик внутри обработчика, к чему приведет? KamalovRadik jQuery 8 17.11.2011 17:08
повешен ли обработчик pharrell Events/DOM/Window 1 18.07.2011 01:35
Как "обмануть" обработчик события? itPiligrim Events/DOM/Window 0 13.05.2010 22:55
Обработчик события: как делает jquery? Shasoft jQuery 35 22.04.2009 09:41