You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在hover内部div时隐藏外部div的编辑图标

问题根源

嵌套元素的hover事件会默认向上冒泡,你hover内部.inner元素时,事件也会触发外层.outer的hover回调,所以两个图标都会显示。另外你原CSS里写的size: 22px是无效属性,要改成font-size才能正常生效。

方案1:纯CSS实现(推荐,性能更高无需JS)

直接删掉原来的JS逻辑,替换成以下CSS即可:

.outer{
    width: 500px;
    height: 200px;
    background-color: fuchsia;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}
.inner{
    width: 300px;
    height: 100px;
    background-color: #2c132c;
    position: relative;
}
.icons{
    content: '^';
    font-size: 22px;
    background-color: gold;
    color: honeydew;
    width: 20px;
    height: 15px;
    position: absolute;
    top: 0;
    left: 0;
    display: none;
}
/* 新增hover控制规则 */
.outer:hover > .icons {
    display: block;
}
.inner:hover > .icons {
    display: block;
}
/* hover内部元素时强制隐藏外层图标 */
.outer:has(.inner:hover) > .icons {
    display: none;
}

方案2:修改JS实现(兼容不支持CSS :has伪类的旧浏览器)

把原来的JS代码替换成以下内容即可:

$(".icons").parent().hover(function(e) {
  // 阻止事件冒泡到父级元素
  e.stopPropagation();
  // 先隐藏所有图标
  $(".icons").hide();
  // 只显示当前hover元素下的直接子图标
  $(this).children('.icons').show();
}, function(e) {
  e.stopPropagation();
  $(this).children('.icons').hide();
  // 离开内部元素时,如果还在外层元素范围内,恢复显示外层图标
  if ($(this).hasClass('inner') && $(e.relatedTarget).closest('.outer').length) {
    $('.outer > .icons').show();
  }
});

内容的提问来源于stack exchange,提问作者Joy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:15:03