将鼠标悬停在打开菜单上,而不用jQuery单击

时间:2020-06-26 09:49:20

标签: javascript jquery css bootstrap-4 mouseevent

我想将默认的Bootstrap导航栏组件更改为移动设备上的向下钻取导航。 为此,我添加了一些JavaScript代码来更改菜单。

这是我目前正在使用的代码:https://codepen.io/cray_code/pen/dENeKM

工作正常,但在桌面上单击后会打开菜单,而不是悬停事件。

对于桌面视口,有以下代码:

$('.mega-menu-trigger').bind('click' ,function(e){

    e.preventDefault();
    var current = $(this).next('.mega-menu');
    $('.mega-menu-trigger').not(this).removeClass('active');
    $(this).toggleClass('active');
    $('.mega-menu').not(current).removeClass('open').addClass('closed');
    if( !current.hasClass('open') ){
        current.removeClass('closed').addClass('open');
    } else {
        current.removeClass('open').addClass('closed');
    }
});

我尝试将mouseenter的代码更改为此:

$('.mega-menu-trigger').bind(mouseenter: function(e){

但这不起作用,而且我的问题是,离开链接后菜单保持打开状态。 我想我必须与mouseleave合作,但我不知道怎么做。

是否可以将菜单从单击更改为悬停?

4 个答案:

答案 0 :(得分:2)

可以通过以下方式结合使用mouseenter和mouseleave事件来实现悬停时菜单打开关闭行为。

// Klick Funktionen hinzufügen
$('.mega-menu-trigger').bind('mouseenter mouseleave' ,function(e){

   e.preventDefault();
   var current = $(this).next('.mega-menu');
   $('.mega-menu-trigger').not(this).removeClass('active');
   $(this).toggleClass('active');
   $('.mega-menu').not(current).removeClass('open').addClass('closed');
   if( !current.hasClass('open') ){
      current.removeClass('closed').addClass('open');
   } else {
     current.removeClass('open').addClass('closed');
   }
})

答案 1 :(得分:2)

正如您所说的...您需要使用mouseenter和mouseleave ...简单地做到这一点。

$('.mega-menu-trigger').bind('mouseenter mouseleave' ,function(e){

答案 2 :(得分:1)

与您在Codepen中的代码一起使用的CSS代码:

.menu-item.has-sub-menu:hover > .menu > .menu-item{
    margin-top: 0;
    margin-bottom: 1em;
    opacity: 1!important;
    -webkit-transition: opacity .3s .6s ease-in-out, margin .6s ease-in-out;
    transition: opacity .3s .6s ease-in-out, margin .6s ease-in-out;
}

答案 3 :(得分:1)

尝试以下代码

$('.mega-menu-trigger').hover(function (e){

                e.preventDefault();
                var current = $(this).next('.mega-menu');
                $('.mega-menu-trigger').not(this).removeClass('active');
                $(this).toggleClass('active');
                $('.mega-menu').not(current).removeClass('open').addClass('closed');
                if( !current.hasClass('open') ){
                    current.removeClass('closed').addClass('open');
                } else {
                    current.removeClass('open').addClass('closed');
                }
            });

这将打开悬停菜单

这是小提琴链接https://jsfiddle.net/w4vmyrpz/