提问者:小点点

在列表项的悬停时显示div,并保持其可见,直到新的悬停在另一个列表元素上


我正在寻找一个解决方案,以保持一个div可见的悬停,它应该保持可见,直到我再次悬停,而不是在一个鼠标退出事件。

可以悬停的列表的当前标记:

<ul class="crops-archive-home">           
    <li class="vegetables" style="background: #85bc22">        
        <a href="#">Vegetables</a>      
    </li>         
    <li class="bedding-plants" style="background: #00843a">        
        <a href="#">Bedding plants</a>      
    </li>
  etc....
</ul>

以及需要在悬停时显示的DIV

<div class="quote vegetables" style="background: rgba(133,188,34,0.8)">        

    <p>Lorem ipsum advised growbags and growblocks</p>                  
    <hr>
    <p class="sub-quote">Now Victor can grow peat-free and organic</p>

</div>

<div class="quote bedding-plants" style="background: rgba(0,132,58,0.8)">          

    <p>Bedding plants root best on Lorem Ipsum Substrates</p>
    <hr>
    <p class="sub-quote">Healthy plants, stronger roots</p>

</div> 

etc....

这是当前的CSS

.quote{
    opacity: 0;
    transition: opacity 0s 5s;
}   

.quote.active{
    opacity: 1;
    transition: all .4s;
}

以及使用的jQuery:

jQuery(document).ready(function(){
    jQuery(".vegetables").hover(function(){
        jQuery('.quote.vegetables').toggleClass('active');   
    }); 
    jQuery(".bedding-plants").hover(function(){
        jQuery('.quote.bedding-plants').toggleClass('active');   
    });
etc.... 
};

当前设置显示报价div在悬停,它保持可见5秒,但可以重叠与另一个报价时,悬停在一个新的链接在5秒内。

已经用.show().hide()尝试过了,但是引号立即消失了。


共1个答案

匿名用户

如果有一组特定的DIV是该逻辑的一部分,那么最好在悬停时添加(而不是切换)active类,同时通过循环遍历作为该逻辑一部分的其他元素的数组,从这些元素中删除active类。

您还可以跟踪变量中的活动类,并在每次悬停时更新它,而不是循环遍历其他元素的数组。

关键是使用.addClass而不是ToggleClass

删除现有的活动类:

$('div.quote').each(function(div) {
     div.removeClass('active');
})