2017-06-24 153 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