2017-06-24 118 views
0

这已被问了很多。但我似乎无法找到可行的解决方案。我有一个jQuery代码可以打开悬停的子菜单,但当我尝试浏览子菜单项时,它会消失。我该如何解决这个问题?jQuery:保持子菜单打开时悬停在子菜单项上

这里是我的代码:

$('.hover').hover(
 
    function() { 
 
    $('.drop-box').show(); 
 
    }, 
 
    function() { 
 
    $('.drop-box').hide(); 
 
    }) 
 
});
.drop-box { 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 60px; 
 
    background: darkgreen; 
 
    top: 60px; 
 
    left: 0; 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="hover">hover</div> 
 
    <div class="drop-box"> 
 
    <div class="container row"> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

回答

1

只需将.drop-box和其内部.hover的所有内容。 另外,您需要删除top属性以防止文本和.drop-box之间的差距。

$('.hover').hover(
 
       function() { 
 
        $('.drop-box').show(); 
 
       }, 
 
       function() { 
 
        $('.drop-box').hide(); 
 
       } 
 
      );
.drop-box { 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 60px; 
 
    background: darkgreen; 
 
    // top: 60px; 
 
    left: 0; 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="hover">hover<div class="drop-box"> 
 
    <div class="container row"> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    </div> 
 

UPDATE:

如果您不能移动.drop-box.hover,你可以用一个div包裹的一切,并使用CSS添加悬停事件:

.drop-box { 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 60px; 
 
    background: darkgreen; 
 
    // top: 60px; 
 
    left: 0; 
 
    display: none; 
 
} 
 

 
.everything:hover .drop-box { 
 
    display: block; 
 
}
<div class="everything"> 
 
    <div class="hover">hover</div> 
 
    <div class="drop-box"> 
 
    <div class="container row"> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
     <div class="col-md-4"> 
 
     <p class="mb-0">Text</p> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

好的,但是如果我不能把它放在里面呢?不知何故,我还能让它工作吗? – hemoglobin

+0

好吧,有一个CSS解决方案可以比jQuery简单得多。好吗? –

+0

当然,只要它有效! – hemoglobin