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

JQuery UI Tooltip异常:仅首个同ID元素生效其余无显示

问题原因与解决方案

问题根源

  • HTML规范明确要求id属性必须唯一,同一页面不能有多个元素共用同一个id。
  • jQuery通过$("#barracks")选择元素时,只会返回第一个匹配该id的元素,所以后续三个带相同id的img元素根本没被绑定Tooltip事件。

修复步骤

1. 修改HTML:将重复id改为class

把所有img标签的id="barracks"替换成class="barracks",确保符合HTML规范。

修改后的HTML代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.14.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.14.1/jquery-ui.min.js"></script>

<div class="col-lg-2 col-md-2 col-xs-2 thumb">
  <img src="https://www.domain.com/adminp/occur/assets/img/soldier.jpg" class="barracks img-thumbnail img-fluid rounded float-start max-width: 100%;" alt="infantry" title="Infantry">
</div>
<div class="col-lg-2 col-md-2 col-xs-2 thumb">
  <img src="https://www.domain.com/adminp/occur/assets/img/gunner.jpg" class="barracks img-thumbnail img-fluid rounded mx-auto d-block max-width: 100%;" alt="gunner" title="Gunner">
</div>
<div class="col-lg-2 col-md-2 col-xs-2 thumb">
  <img src="https://www.domain.com/adminp/occur/assets/img/pilot.jpg" class="barracks img-thumbnail img-fluid rounded mx-auto d-block max-width: 100%;" alt="pilot" title="Pilot">
</div>
<div class="col-lg-2 col-md-2 col-xs-2 thumb">
  <img src="https://www.domain.com/adminp/occur/assets/img/astronaut.jpg" class="barracks img-thumbnail img-fluid rounded float-end max-width: 100%;" alt="astronaut" title="Astronaut">
</div>

2. 修改JS代码:针对class选择器处理单个元素

原来的代码只操作第一个匹配元素,现在要遍历所有.barracks元素,给每个单独绑定Tooltip,并且点击时只操作当前被点击的元素。

修改后的JS代码:

// 给所有.barracks元素初始化Tooltip
$(".barracks").tooltip({
  disabled: true
});

// 绑定点击事件,仅操作当前被点击的元素
$(document).on("click", ".barracks", function() {
  const $currentImg = $(this);
  if ($currentImg.tooltip("option", "disabled")) {
    $currentImg.tooltip("enable").tooltip("open");
    $currentImg.off("mouseleave focusout");
  } else {
    $currentImg.tooltip("close").tooltip("disable");
  }
});

3. CSS代码保持不变

img {
  width: 100px;
  height: 100px;
  float: left;
  margin: 10px;
}

关键说明

  • 用class代替重复id是核心,既符合HTML标准,又能让jQuery选中所有目标元素。
  • 点击事件中使用$(this)定位当前元素,确保每次操作只针对被点击的单个图片,实现预期的单个元素Tooltip控制逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:05:03