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

使用jQuery获取动态name/id的input元素data-quantity值的问题

解决方法:正确选择元素并获取data属性

首先得揪出你之前代码的问题——你用的.quan" + obj是类选择器,但你的元素里quan2是name属性的值,不是class,所以这个选择器根本找不到目标元素。而$("#" + count)理论上是可行的(毕竟id是唯一的),如果没生效,大概率是代码执行时机不对(比如元素还没动态生成就调用了函数),或者有语法小问题。

下面给你两种可靠的实现方式,分别对应按name或id获取data-quantity的值:

1. 根据name属性获取

要通过name选择元素,得用属性选择器[name='value'],写法如下:

function get() {
  let count = 3;
  let obj = 2;
  // 根据name属性定位元素,再获取data-quantity的值
  let quantity = $("[name='quan" + obj + "']").data("quantity");
  console.log(quantity); // 会输出初始值1
}

这里更推荐用.data("quantity")而非.attr("data-quantity"),因为jQuery的.data()会自动处理数据类型,还会缓存data属性的值,使用起来更灵活。

2. 根据id获取

如果你的id是唯一的(按照你的逻辑,count是1-5,肯定唯一),那$("#" + count)是完全可行的,检查下是不是代码执行时机不对(比如元素还没生成就调用了get函数)。正确写法:

function get() {
  let count = 3;
  let obj = 2;
  // 根据id定位元素,再获取data-quantity的值
  let quantity = $("#" + count).data("quantity");
  console.log(quantity);
}

额外提醒:如果是要修改值的话

你之前写的.attr("data-quantity","4")是设置DOM属性值,要是你想修改data-quantity,用.data("quantity", 4)会更合适——它会同时更新jQuery内部的缓存和DOM属性(不过注意,.data()修改后,DOM上的data-quantity属性不会立刻改变,但后续用.data()获取的是修改后的值)。

另外,务必确保jQuery已经正确引入,而且代码是在DOM加载完成后执行的(比如放在$(document).ready(function(){ ... })里),不然动态生成的元素可能还没被jQuery识别到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:26:05