Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

top.menu выпадение по клику

00 голосов
7
В данный момент меню выпадает по событию onMouseOver, кто-нибудь переделывал на событие onClick?

Искал, менял событие одно на другое в файле .js, но оно все равно выпадает по наведении курсора мышки. Пересмотрел около 100 сайтов на Битриксе, везде меню выползает при наведении.

PS: события менял тут
bitrix/templates/название_шаблона/components/bitrix/menu/horizontal_multilevel/script.js
Код
var jshover = function()
{
   var menuDiv = document.getElementById("horizontal-multilevel-menu")
   if (!menuDiv)
      return;

   var sfEls = menuDiv.getElementsByTagName("li");
   for (var i=0; i<sfEls.length; i++) 
   {
      sfEls[i].onmouseover=function()
      {
         this.className+=" jshover";
      }
      sfEls[i].onmouseout=function() 
      {
         this.className=this.className.replace(new RegExp(" jshover\\b"), "");
      }
   }
}
спросил 11 Авг, 13 от EvgBJ (200 баллов)

7 Ответы

00 голосов
Этот скрипт для IE древних версий, которые не понимали :hover на [*].
Чтобы меню не выпадало, нужно из стилей убрать строку
Код
#horizontal-multilevel-menu li:hover ul { display:block }

и на яваскрипте (или jquery, что проще) дописать обработчик события на клик, который будет скрывать\показывать вложенный список.
ответил 11 Авг, 13 от Ahbar (820 баллов)
00 голосов
В jquery я не селен, прикрутил и попробовал сделать так, в скрипт запихал:
Код
$('li.horizontal-multilevel-menu ul').hide(); 
 $('li.horizontal-multilevel-menu').hover(function() { 
$('li.horizontal-multilevel-menu ul').show(); 
}, 
function() { 
      $('li.horizontal-multilevel-menu ul').hide(); 
}); 


в стиле сроки
#horizontal-multilevel-menu li:hover ul
и
{ display:block }
за комментировал.

Получилось так:
Код
/*
#horizontal-multilevel-menu li:hover ul, */
#horizontal-multilevel-menu li.jshover ul,
#horizontal-multilevel-menu li li:hover ul,
#horizontal-multilevel-menu li li.jshover ul,
#horizontal-multilevel-menu li li li:hover ul,
#horizontal-multilevel-menu li li li.jshover ul,
#horizontal-multilevel-menu li li li li:hover ul,
#horizontal-multilevel-menu li li li li.jshover ul,
#horizontal-multilevel-menu li li li li li:hover ul,
#horizontal-multilevel-menu li li li li li.jshover ul
/*{
   z-index:1000;
   top:auto;
   display:block;
}*/

Но меню теперь вообще не выпадает.
ответил 14 Окт, 13 от EvgBJ (200 баллов)
00 голосов
С горем пополам в этом JQuery разобрался, состряпал такой код:
Код
    jQuery(document).ready(function(){
 
    jQuery("#top-menu li").hover(
 
                      $('li').click(function(){
               jQuery(this).find('ul').slideDown();
        }),
 
        function(){
        jQuery(this).find('ul').slideUp();
           }
    );
});


Только вот проблема, при клике кроме выплывания меню происходит еще переход по ссылке, если ссылку из топового меню убрать, то список не выпадает.
Запутался я :(
ответил 15 Янв, 14 от EvgBJ (200 баллов)
00 голосов
Код
jQuery("#top-menu li a").click(function(){
 return false;
})
ответил 04 Май, 14 от unik (2,560 баллов)
00 голосов
Спасибо за код, только куда и как его пристроить?) Пробовал по разному, либо вообще менюшка не работает, либо выползает, но по ссылкам не перейти.
ответил 29 Авг, 14 от EvgBJ (200 баллов)
00 голосов
Фуф, все разобрался:
Код
$(document).ready(function(){
   $('div#top-menu>ul>li>a').click(function() {
       if ($(this).parent().find('ul').length) {
          $(this).parent().find('ul').slideToggle(200);            
          return false;
      }
   });
});
ответил 04 Янв, 15 от EvgBJ (200 баллов)
00 голосов
ALED
Можно узнать куда вы всё таки этот код поместили?
ответил 24 Апр, 15 от demoni4ka (100 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
4 ответов
спросил 21 Янв, 14 от Ushastik (100 баллов)
0 голосов
0 ответов
спросил 13 Янв, 14 от Qomar (160 баллов)
0 голосов
2 ответов
спросил 12 Июль, 13 от 2Cool4U (120 баллов)
0 голосов
3 ответов
спросил 01 Май, 13 от Mauka (320 баллов)