Проблема с сложным выпадающим меню, как решить?

158
23 марта 2017, 18:35

Есть проект в нем сложное выпадающее меню (второй выпадающий блок по высоте выше в некоторых случаях чем первый, аналогично третий в некоторых случаях выше чем второй и т.д.), нужно поводить мышкой и все сразу станет ясно. Так вот в чем вопрос:

сейчас все как бы работает правильно, за исключением одного момента:

-если мы наводи скажем на Сухие смеси, открывается второй блок меню, все ок, но если сразу вернуться на Сухие смеси то второй блок выпадающий обрежется (поводите мышкой туда сюда и это четко видно) -далее переходим на второй блок пункт Штукатурки - все ок - но если мы вернемся на начальный первый блок - пункт Сухие смеси, то второй выпадающий блок укорачивается обрезая длинну под уровень первого блока выравнивание блоков я сделал с помощью вот такого скрипта

$('.parent').hover( 
  function() { 
 
    hchild = $(this).children('ul').outerHeight(true) + 4; 
    hparent = $(this).parents('.submenu').outerHeight(true); 
    if (hchild > hparent) { 
      $(this).parents('.submenu').css('height', hchild); 
      if (!$(this).parent("ul").is(".level-1")) { 
        $(this).parent("ul").css('height', hchild - 4); 
      } 
    } else { 
      if (hchild < hparent) { 
        $(this).children('ul').css('height', hparent - 4); 
 
 
      } 
 
    } 
 
  }, 
  function() { 
    $(this).parents('.submenu').removeAttr("style"); 
    $(this).children('ul').removeAttr("style"); 
    //$(this).parent("ul").removeAttr("style"); 
  });

и вот не могу понять где косяк, почему так происходит? Помогите разобраться. Спасибо.

Answer 1

Проблема в том, что когда бы уводите мышь из второго раздела в первый сначала срабатывает mouseOver пункта меню "строительные смеси", потом mouseOut пункта меню из которого была мышь убрана. Получается, что сначала задается высота, а потом сразу-же стирается.

Лучше сделайте один обработчик события на оба события, а активное меню определяйте через селектор :hover

READ ALSO
Вопрос по формам

Вопрос по формам

При отправке формы человек попадает на страницу оплатыКак сделать так, чтобы оплата происходила в новом окне?

135
Как одолеть постоянное недовольство canvas?

Как одолеть постоянное недовольство canvas?

Нужно было выводить картинку и на ней текстЛадно, 20 минут поиска и нужны код у меня, чуть-чуть его дорабатываем, даем картинку и все, отлично

136
Как получить список MAC-адресов в ЛВС на C#?

Как получить список MAC-адресов в ЛВС на C#?

Мне нужно получить список MAC-адресов всех компьютеров в ЛВСКак я могу это сделать? Думаю, что можно получить этот список у DHCP-сервера, но не могу...

411
&ldquo;Множественное наследование&rdquo; c#

“Множественное наследование” c#

Есть иерархия классов, появилась ситуация в которой не могу придумать нормального решения(стрелками показано наследование, красным цветом...

190