Реализация выпадающего меню
Добрый день. Столкнулся с проблемой при реализации выпадающего меню.
Суть проблемы такова. При наведении на родительский пункт меню, по средствам CSS, раскрывается подменю. А при наведении курсора на ссылки в подменю, начинают подтягиваться материалы (ajax) в div в этом же подменю. Как реализовать загрузку материалов в первый пункт подменю уже при наведении курсора на родительский пункт меню.
$(".js-dropnav-active li.dropnav-menu__item").hover(function(){
$(".js-dropnav-active li.dropnav-menu__item").removeClass("dropnav-menu__active");
$(this).addClass("dropnav-menu__active");
var link = $(this).attr('id');
var data = 'data='+link;
$.ajax({
url: 'components/drop-menu/items.php',
type: 'POST',
data: data,
dataType: 'html',
success: function(result){
$("#ajax-"+link).html(result);
},
beforeSend: function(){
var imgProc = '<div class="loading"></div>';
$("#ajax-"+link).html(imgProc);
}
});
return false;
});
});
<ul class="nav-bar"> <li class="nav-bar__item dropnav js-dropnav"> <a href="#">Родительский пункт меню</a> <ul class="dropnav-menu"> <li id="pc" class="dropnav-menu__item dropnav-menu__active"> <a href="#">Первый пункт подменю</a> <ul class="dropnav-submenu"> <div id="ajax-pc"></div> </ul> </li> <li id="pr" class="dropnav-menu__item "> <a href="#">Второй пункт подменю</a> <ul class="dropnav-submenu"> <div id="ajax-pr"></div> </ul> </li> </ul> </li> </ul> |
waterfly,
вариант добавить
$(".js-dropnav-active .nav-bar__item").mouseenter(function() {
$("li.dropnav-menu__item:first", this).mouseenter();
})
|
Сделал по Вашему совету
$(document).ready(function(){
$(".js-dropnav-active li.dropnav-menu__item").hover(function(){
$("li.dropnav-menu__item:first", this).mouseenter();
$(".js-dropnav-active li.dropnav-menu__item").removeClass("dropnav-menu__active");
$(this).addClass("dropnav-menu__active");
var link = $(this).attr('id');
var data = 'data='+link;
$.ajax({
url: 'components/drop-menu/items.php',
type: 'POST',
data: data,
dataType: 'html',
success: function(result){
$("#games-"+link).html(result);
},
beforeSend: function(){
var imgProc = '<div class="loading"></div>';
$("#games-"+link).html(imgProc);
}
});
return false;
});
});
Теперь получаю такой эфект пошагово: 1. При наведении на родителя запрос не передается. 2. При наведении на первый пункт меню запрос уходит/приходит. 3. Возвращаю курсор на родителя - запрос уходит/приходит. |
waterfly,
;) добавить а не вставить
$(function() {
$(".js-dropnav-active li.dropnav-menu__item").hover(function(event) {
$(".js-dropnav-active li.dropnav-menu__item").removeClass("dropnav-menu__active");
$(this).addClass("dropnav-menu__active");
var link = $(this).attr('id');
var data = 'data=' + link;
$.ajax({
url: 'components/drop-menu/items.php',
type: 'POST',
data: data,
dataType: 'html',
success: function(result) {
$("#ajax-" + link).html(result);
},
beforeSend: function() {
var imgProc = '<div class="loading"></div>';
$("#ajax-" + link).html(imgProc);
}
});
return false;
});
$(".js-dropnav-active .nav-bar__item").mouseenter(function() {
$("li.dropnav-menu__item:first", this).mouseenter();
})
});
|
Чем дальше, тем запутанее)
теперь... 1. Родитель - раскрывается меню. (запроса - нет) 2. Подпункт №1 - уходит один запрос/ответ. 3. Подпункт №2 - уходят два запроса/ответа ( подпункта №2 и №3 ). 3. Подпункт №3 - уходят два запроса/ответа ( подпункта №3 и №4 ). 5. Возвращаемся на родителя уходит запрос/ответ №1. |
waterfly,
может вам ограничение сделать - посылать только 1 запрос а не при каждом наведении. |
Цитата:
Не решает проблемы с родителем. |
| Часовой пояс GMT +3, время: 16:18. |