Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2017, 12:36
Новичок на форуме
Отправить личное сообщение для Maklerfox Посмотреть профиль Найти все сообщения от Maklerfox
 
Регистрация: 19.01.2017
Сообщений: 6

задержка выпадания меню при наведении
Добрый день.
Всю голову сломал. Подскажите пожалуйста как сделать выпадание меню с задержкой. Скрипт готов без задержки и работает. А как добавить задержку голову сломал.

this.setHandlersNotMobile = function(){
		menu.on('mouseenter.mainMenu', '.catalog-menu-lvl0-item', function(){
			var _ = $(this);
			var submenu = _.children('.submenu-wrap');
			if ( _.hasClass('opened') ){
				submenu.velocity('stop').velocity('reverse');
				//$('body').addClass('darken');
				return false;
			}
			submenu.addClass('opened'),
			setTimeout(function(){
				if (typeof initHCarousel === 'function') submenu.find('.scroll-slider-wrap').each(initHCarousel);
			}, 50);
		}).on('mouseleave.mainMenu', '.catalog-menu-lvl0-item', function(){
			var _ = $(this);
			var submenu = _.children('.submenu-wrap');
			submenu.removeClass('opened');
		}).on('hitstoggle', function(e, data){
			if ( data.type === 'show' && typeof initHCarousel === 'function' ){
				data.wrap.each(initHCarousel);
			}
		});
	}
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2017, 13:08
Аспирант
Отправить личное сообщение для serj0110 Посмотреть профиль Найти все сообщения от serj0110
 
Регистрация: 22.10.2016
Сообщений: 32

Сообщение от Maklerfox Посмотреть сообщение
Добрый день.
Всю голову сломал. Подскажите пожалуйста как сделать выпадание меню с задержкой. Скрипт готов без задержки и работает. А как добавить задержку голову сломал.

this.setHandlersNotMobile = function(){
		menu.on('mouseenter.mainMenu', '.catalog-menu-lvl0-item', function(){
			var _ = $(this);
			var submenu = _.children('.submenu-wrap');
			if ( _.hasClass('opened') ){
				submenu.velocity('stop').velocity('reverse');
				//$('body').addClass('darken');
				return false;
			}
			submenu.addClass('opened'),
			setTimeout(function(){
				if (typeof initHCarousel === 'function') submenu.find('.scroll-slider-wrap').each(initHCarousel);
			}, 50);
		}).on('mouseleave.mainMenu', '.catalog-menu-lvl0-item', function(){
			var _ = $(this);
			var submenu = _.children('.submenu-wrap');
			submenu.removeClass('opened');
		}).on('hitstoggle', function(e, data){
			if ( data.type === 'show' && typeof initHCarousel === 'function' ){
				data.wrap.each(initHCarousel);
			}
		});
	}
Увеличь время задержки, у тебя 50 миллисекунд, вот и не видишь этой задержки

Последний раз редактировалось serj0110, 19.01.2017 в 13:10.
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2017, 13:17
Новичок на форуме
Отправить личное сообщение для Maklerfox Посмотреть профиль Найти все сообщения от Maklerfox
 
Регистрация: 19.01.2017
Сообщений: 6

Это немного не то. В выпадающем меню есть еще блок раскрывающийся с кнопки. Это и есть задержка по этому блоку. А вот по меню нет.
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2017, 13:54
Аспирант
Отправить личное сообщение для serj0110 Посмотреть профиль Найти все сообщения от serj0110
 
Регистрация: 22.10.2016
Сообщений: 32

Сообщение от Maklerfox Посмотреть сообщение
Это немного не то. В выпадающем меню есть еще блок раскрывающийся с кнопки. Это и есть задержка по этому блоку. А вот по меню нет.
Так сделай
setTimeout(function() {
А сюда свою функцию, если произошло наведение на кнопку меню
}, 1000);
Ответить с цитированием
  #5 (permalink)  
Старый 19.01.2017, 14:15
Новичок на форуме
Отправить личное сообщение для Maklerfox Посмотреть профиль Найти все сообщения от Maklerfox
 
Регистрация: 19.01.2017
Сообщений: 6

Сообщение от serj0110 Посмотреть сообщение
Так сделай
setTimeout(function() {
А сюда свою функцию, если произошло наведение на кнопку меню
}, 1000);
В какое место это вставить? Все перпробовал
Ответить с цитированием
  #6 (permalink)  
Старый 19.01.2017, 14:27
Аспирант
Отправить личное сообщение для serj0110 Посмотреть профиль Найти все сообщения от serj0110
 
Регистрация: 22.10.2016
Сообщений: 32

Сообщение от Maklerfox Посмотреть сообщение
В какое место это вставить? Все перпробовал
Я подозреваю что это не весь код, либо я чего-то не понимаю, не спец ещё в этом, попробуй на всю приведенную функцию сделать setTimeout
P.S. я слегка иначе всё пишу, так что сложновато понять чужой код
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2017, 14:29
Новичок на форуме
Отправить личное сообщение для Maklerfox Посмотреть профиль Найти все сообщения от Maklerfox
 
Регистрация: 19.01.2017
Сообщений: 6

делал на всю функцию))) Не помогает)))
Ответить с цитированием
  #8 (permalink)  
Старый 19.01.2017, 14:43
Аспирант
Отправить личное сообщение для serj0110 Посмотреть профиль Найти все сообщения от serj0110
 
Регистрация: 22.10.2016
Сообщений: 32

Сообщение от Maklerfox Посмотреть сообщение
делал на всю функцию))) Не помогает)))
Покажи строку кода, где задаешь событие при наведении указателя на кнопку.
Ответить с цитированием
  #9 (permalink)  
Старый 19.01.2017, 14:57
Новичок на форуме
Отправить личное сообщение для Maklerfox Посмотреть профиль Найти все сообщения от Maklerfox
 
Регистрация: 19.01.2017
Сообщений: 6

Сообщение от serj0110 Посмотреть сообщение
Покажи строку кода, где задаешь событие при наведении указателя на кнопку.
пробовал даже методом тыка. Тишина.

А так мое видение было таким

this.setHandlersNotMobile = function(){
		menu.on('mouseenter.mainMenu', '.catalog-menu-lvl0-item', function(){
			var _ = $(this);
			setTimeout(function(){
			var submenu = _.children('.submenu-wrap');
			if ( _.hasClass('opened') ){
				submenu.velocity('stop').velocity('reverse');
				//$('body').addClass('darken');
				return;
			}
			submenu.addClass('opened')
			}, 500);
			setTimeout(function(){
				if (typeof initHCarousel === 'function') submenu.find('.scroll-slider-wrap').each(initHCarousel);
			}, 50);
		}).on('mouseleave.mainMenu', '.catalog-menu-lvl0-item', function(){
			var _ = $(this);
			var submenu = _.children('.submenu-wrap');
			submenu.removeClass('opened');
		}).on('hitstoggle', function(e, data){
			if ( data.type === 'show' && typeof initHCarousel === 'function' ){
				data.wrap.each(initHCarousel);
			}
		});
	}

При таком исполнении резко проводя по меню оно появлятся но не убирается. Нужно навести на какое то время что бы пропало.

Последний раз редактировалось Maklerfox, 19.01.2017 в 14:58. Причина: Не дописал
Ответить с цитированием
  #10 (permalink)  
Старый 19.01.2017, 15:18
Аспирант
Отправить личное сообщение для serj0110 Посмотреть профиль Найти все сообщения от serj0110
 
Регистрация: 22.10.2016
Сообщений: 32

Сообщение от Maklerfox Посмотреть сообщение
При таком исполнении резко проводя по меню оно появлятся но не убирается. Нужно навести на какое то время что бы пропало.
Я бы на твоём месте лучше сделал бы при клике, так как при наведении, много чего учесть надо, если с задержкой

Последний раз редактировалось serj0110, 19.01.2017 в 15:22.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При на ведении меню мигает и открываються все пункты Dark19 Элементы интерфейса 4 23.12.2014 22:14
При наведении пропадает меню Paracitomol jQuery 0 05.07.2013 19:50
Подружить два скрипта (скроллер+скрипт эффекта при наведении) Che jQuery 26 29.08.2012 10:59
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
ПОМОГИТЕ !!! Активные пункты меню при наведении на ссылку Salo jQuery 4 08.12.2010 12:49