Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.05.2018, 11:14
Интересующийся
Отправить личное сообщение для oleg13321 Посмотреть профиль Найти все сообщения от oleg13321
 
Регистрация: 14.05.2018
Сообщений: 24

mouseenter event Кнопка каталога
Доброго времени суток.
Встала проблема, которую не могу сообразить как решить.
Есть тег div.nav_catalog
При наведении на него на другой не вложенный в него тег div.catalog_list должен вешаться класс .catalog_list__hover.
Таким образом, у меня всплывает меню категорий товаров.

Я это реализовал:
$(document).ready(function() {
	$('.nav_catalog').mouseenter(function(){
		$('.catalog_list').addClass('catalog_list__hover');
	});
});


Встал вопрос как скрыть каталог при уходе мыши.
При уходе мыши с кнопки Каталог div.nav_catalog
>>Если Мышь переведена на div.catalog_list
---Каталог не скрывать
>>Если мышь не над div.catalog_list
---Каталог скрыть

Я пытался вкурить как это проверить, но у меня происходит какая-то фигня, например он у меня либо никак не реагирует, либо реагирует как раз наоборот
Я не могу понять как проверить навелся ли курсор на div.catalog_list
П
$('.nav_catalog').mouseleave(function(){
		// $('.catalog_list').mouseenter(function(e){
		// 	if(!e){
		// 		$('.catalog_list').removeClass('catalog_list__hover');
		// 	}
		// });
	});

Последний раз редактировалось oleg13321, 24.05.2018 в 11:17.
Ответить с цитированием
  #2 (permalink)  
Старый 24.05.2018, 11:19
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Так не работает?
$(document).ready(function() {
    let timer = 0;
    const $list = $('.catalog_list');
    $('.nav_catalog').add($list).mouseenter(function() {
        clearTimeout(timer);
        $list.addClass('catalog_list__hover');
    }).mouseleave(function() {
        clearTimeout(timer);
        timer = setTimeout(function() {
            $list.removeClass('catalog_list__hover');
        }, 130);
    });
});

Последний раз редактировалось Nexus, 24.05.2018 в 11:21.
Ответить с цитированием
  #3 (permalink)  
Старый 24.05.2018, 11:21
Интересующийся
Отправить личное сообщение для oleg13321 Посмотреть профиль Найти все сообщения от oleg13321
 
Регистрация: 14.05.2018
Сообщений: 24

Сейчас посмотрю.
Ответить с цитированием
  #4 (permalink)  
Старый 24.05.2018, 11:23
Интересующийся
Отправить личное сообщение для oleg13321 Посмотреть профиль Найти все сообщения от oleg13321
 
Регистрация: 14.05.2018
Сообщений: 24

Сообщение от Nexus Посмотреть сообщение
Так не работает?
$(document).ready(function() {
    let timer = 0;
    const $list = $('.catalog_list');
    $('.nav_catalog').add($list).mouseenter(function() {
        clearTimeout(timer);
        $list.addClass('catalog_list__hover');
    }).mouseleave(function() {
        clearTimeout(timer);
        timer = setTimeout(function() {
            $list.removeClass('catalog_list__hover');
        }, 130);
    });
});
При попытке перевести курсор на на catalog_list. он скрывается, а я от этого хочу уйти.
Верста такова, что catalog_list не дочерний элемент nav_catalog
Иначе бы я решил этот вопрос на css =)
Ответить с цитированием
  #5 (permalink)  
Старый 24.05.2018, 11:28
Интересующийся
Отправить личное сообщение для oleg13321 Посмотреть профиль Найти все сообщения от oleg13321
 
Регистрация: 14.05.2018
Сообщений: 24

<div class="col-2 nav_item nav_catalog">
	<a href="#">
		<i class="fas fa-bars"></i>
		<span>Каталог</span>
		<i class="fas fa-angle-down"></i>
	</a>
</div>
<div class="row catalog_list">
	<div class="col-2 catalog_item">
		<a href="#">
			<img src="img/cat_item1.jpg" alt="Мебель">
			<span class="title">Мебель для детского сада</span>
		</a>
	</div>
	<div class="col-2 catalog_item">
		<a href="#">
			<img src="img/cat_item1.jpg" alt="Мебель">
			<span class="title">Мебель для детского сада</span>
		</a>
	</div>
	<div class="col-2 catalog_item">
		<a href="#">
			<img src="img/cat_item1.jpg" alt="Мебель">
			<span class="title">Мебель для детского сада</span>
		</a>
	</div>
	<div class="col-2 catalog_item">
		<a href="#">
			<img src="img/cat_item1.jpg" alt="Мебель">
			<span class="title">Мебель для детского сада</span>
		</a>
	</div>
</div>
Ответить с цитированием
  #6 (permalink)  
Старый 24.05.2018, 11:30
Интересующийся
Отправить личное сообщение для oleg13321 Посмотреть профиль Найти все сообщения от oleg13321
 
Регистрация: 14.05.2018
Сообщений: 24

Такой вариант работает)
Спасибо большое)

Таймеры выставили, получается?
А то сначала вариант был без них, и я не сразу заметил разницу.

Последний раз редактировалось oleg13321, 24.05.2018 в 11:32.
Ответить с цитированием
  #7 (permalink)  
Старый 24.05.2018, 11:47
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

oleg13321, да, я изменял код, прошу прощения, что не предупредил.
Думал вы не видели изначальный вариант.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать event, эмулирующий enter Artanis Events/DOM/Window 7 16.07.2019 06:40
Игра-квест на JS, помогите разобраться в структуре m_lulu Общие вопросы Javascript 1 29.03.2018 14:02
панель сортировки каталога, общий Get на несколько текущих параметров ef1 Элементы интерфейса 2 11.07.2017 14:34
Не работает кнопка "Наверх" dle 9.3 dunek_ Opera, Safari и др. 1 25.05.2013 18:26
event + setTimeout fsingle Events/DOM/Window 2 02.05.2012 09:07