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

如何仅对当前元素应用jQuery实现缩略图悬停显示商品摘要

问题描述

希望实现仅当鼠标悬停在product-thumbnail(商品缩略图)上时,显示对应的product-summary(商品摘要),但当前的jQuery代码会作用于所有元素。尝试添加this关键字但无效,请问如何修改代码使其仅作用于当前元素?

原代码

jQuery(".product-thumbnail").hover (function() {
   jQuery(".product-summary").attr("id","ps-id");
});
jQuery(".product-thumbnail").mouseout (function() {
   jQuery(".product-summary").removeAttr("id");
});

尝试修改后的代码

jQuery(".product-thumbnail", this).hover (function() {
    jQuery(".product-summary").attr("id","ps-id");
});
jQuery(".product-thumbnail", this).mouseout (function() {
    jQuery(".product-summary").removeAttr("id");
});

解决方案

你的核心问题是在事件回调里没有基于当前触发事件的元素(即this)定位对应product-summary,而是全局选择了所有product-summary元素,因此会影响全部内容。

关键思路

在hover和mouseout的回调函数中,this指向当前被悬停的product-thumbnail元素,你需要根据实际DOM结构的关系,从这个元素出发找到对应的product-summary。以下是几种常见场景的修改方式:


场景1:product-summary是product-thumbnail的兄弟元素

如果DOM结构如下:

<div class="product-item">
  <div class="product-thumbnail">...</div>
  <div class="product-summary">...</div>
</div>

修改后的代码:

jQuery(".product-thumbnail").hover(function() {
  // 定位当前缩略图的兄弟元素product-summary
  jQuery(this).siblings(".product-summary").attr("id", "ps-id");
}).mouseout(function() {
  jQuery(this).siblings(".product-summary").removeAttr("id");
});

场景2:product-summary在product-thumbnail的父容器内

如果DOM结构如下:

<div class="product-item">
  <div class="product-thumbnail">...</div>
  <div class="summary-box">
    <div class="product-summary">...</div>
  </div>
</div>

修改后的代码:

jQuery(".product-thumbnail").hover(function() {
  // 先找到共同父容器,再在容器内定位目标元素
  jQuery(this).closest(".product-item").find(".product-summary").attr("id", "ps-id");
}).mouseout(function() {
  jQuery(this).closest(".product-item").find(".product-summary").removeAttr("id");
});

场景3:product-summary是product-thumbnail的子元素

如果DOM结构如下:

<div class="product-thumbnail">
  <img src="商品图地址" />
  <div class="product-summary">...</div>
</div>

修改后的代码:

jQuery(".product-thumbnail").hover(function() {
  jQuery(this).find(".product-summary").attr("id", "ps-id");
}).mouseout(function() {
  jQuery(this).find(".product-summary").removeAttr("id");
});

代码优化

另外,hover方法本身支持传入两个回调(分别对应鼠标进入/离开),可以合并代码让结构更简洁:

jQuery(".product-thumbnail").hover(
  // 鼠标进入时执行
  function() {
    jQuery(this).closest(".product-item").find(".product-summary").attr("id", "ps-id");
  },
  // 鼠标离开时执行
  function() {
    jQuery(this).closest(".product-item").find(".product-summary").removeAttr("id");
  }
);

内容的提问来源于stack exchange,提问作者dev-one

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:15:36