html - 在列表项悬停时显示 div 并保持可见,直到新悬停在另一个列表元素上
问题描述
我正在寻找一种解决方案来保持 div 在悬停时可见,并且它应该保持可见,直到我再次悬停而不是 mouseout 事件。
可以悬停的列表的当前标记:
<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()
报价立即消失。
解决方案
如果有一组特定的 div 是此逻辑的一部分,而不是切换类,您最好active
在悬停时添加(而不是切换)类,同时active
从其他元素中删除类通过循环遍历这些元素的数组,是该逻辑的一部分。
您还可以跟踪变量中的活动类并在每次悬停时更新它,而不是循环遍历其他元素的数组。
关键是使用.addClass
而不是toggleClass
.
要删除现有的active
类:
$('div.quote').each(function(div) {
div.removeClass('active');
})
推荐阅读
- c++ - main 函数返回 3221225477 尽管它按预期编译和运行
- mysql - 计算返回值并插入另一个表
- linear-programming - 线性规划的 Cplex:DOCplex 决策变量是否假定为非负数?
- python - 如何让我的代码循环直到我按下一个按钮(乐高 EV3)
- r - 在 R 中包装函数类似于 Python 装饰器
- javascript - NodeJS/knex 如何处理从数据库查询时收到的每个项目(记录超过 10 亿条)
- mitmproxy - Mitmproxy 上的行为和流之间的异步性
- database - 如何使用 URI 而不是主机、端口、用户名和密码字段配置 NestJS TypeOrm?
- java - TFLite 模型处理时 Android 应用程序崩溃 - A/libc:致命信号 11 (SIGSEGV),代码 2 (SEGV_ACCERR),故障地址 0x767af9c570
- javascript - 对移动设备上的 Leaflet JS 窃听问题进行故障排除