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

jQuery hover时如何仅触发当前悬浮图片对应overlay显示

问题根因

你的代码存在两处语法和逻辑错误,导致无法定位到当前元素对应的遮罩层:

  • 选择器中$(".projects-img, this")、$(".overlay, this")属于无效写法,jQuery无法识别这种脱离上下文的this,会直接全局匹配所有.overlay元素,默认操作第一个匹配节点,也就是第一张图的遮罩
  • 事件回调使用箭头函数会改变this指向,回调内的this不会指向当前触发事件的DOM元素,无法拿到当前悬浮的图片节点
可用修复代码

不要使用箭头函数写事件回调,在回调内通过当前触发事件的DOM元素,查找同级对应的.overlay节点单独操作,不要全局选中所有遮罩:

// 初始化隐藏所有遮罩
$(".overlay").hide();

// 鼠标移入显示当前对应遮罩
$(".projects-img").mouseover(function() {
  $(this).siblings(".overlay").show();
});

// 鼠标移出隐藏当前对应遮罩
$(".projects-img").mouseout(function() {
  $(this).siblings(".overlay").hide();
});
交互优化方案

上面的写法把事件绑定在img标签上,当鼠标移动到弹出的遮罩文本上时,会触发mouseout导致遮罩反复闪烁,体验更好的写法是把事件绑定在外层公共容器.hold-img上,用mouseenter和mouseleave事件避免冒泡问题:

$(".overlay").hide();

$(".hold-img")
  .mouseenter(function() {
    $(this).find(".overlay").show();
  })
  .mouseleave(function() {
    $(this).find(".overlay").hide();
  });

这种写法下只要鼠标在单个项目卡片的范围内,遮罩就会保持显示,不会出现闪烁问题。

页面效果参考

项目区块悬浮效果截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:54:19