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

jQuery多相同ID元素的data-value属性取值问题求助

解决多个重复ID元素的data-value获取问题

首先得指出一个关键问题:HTML规范里ID必须是唯一的,你现在多个<span>用了同一个id="nota_imdb",这是不符合标准的,浏览器在解析的时候只会匹配到第一个带这个ID的元素,所以你的代码只能拿到第一个data-value="18"的值,这就是问题根源。

下面是具体的解决步骤:

1. 修改HTML结构,替换重复ID为Class

把所有重复的id="nota_imdb"改成class="nota_imdb",Class是允许重复使用的:

<span class="imdb nota_imdb" data-value="18"></span>
<span class="imdb nota_imdb" data-value="19"></span>
<span class="imdb nota_imdb" data-value="20"></span>
<!-- 假设你要把结果写入这个元素 -->
<div id="imdb"></div>

2. 用jQuery遍历所有元素获取data-value

现在可以通过Class选择器选中所有目标元素,然后遍历获取每个的data-value:

方案1:把所有值拼接后写入

如果你想把所有值用分隔符(比如逗号)连起来显示:

// 遍历所有.nota_imdb元素,提取data-value并转成数组
var allValues = $(".nota_imdb").map(function() {
  // 用data()方法比attr()更推荐,能自动转换数据类型(比如这里的数字会变成Number)
  return $(this).data("value");
}).get();

// 把数组转成逗号分隔的字符串,写入#imdb
$("#imdb").text(allValues.join(", "));

执行后#imdb的内容会是:18, 19, 20

方案2:逐个处理每个值

如果需要对每个值单独操作(比如逐个添加到页面):

$(".nota_imdb").each(function() {
  var value = $(this).data("value");
  // 这里可以根据需求做任何操作,比如追加到#imdb
  $("#imdb").append("<span class='imdb-value'>" + value + "</span> ");
});

这样会给#imdb里添加三个分别显示18、19、20的<span>元素。

小提示

使用$(element).data("value")比attr("data-value")更靠谱:前者会自动解析data属性的类型(比如你的data-value是数字,它会返回Number类型),而后者只会返回字符串,后续处理更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:32:00