如何用jQuery选择表格特定nth-child元素并对应赋值到其他字段
你现有代码的问题在于:直接对包含多个元素的jQuery集合调用.val()方法时,只会返回集合中第一个元素的值,同时没有对两组输入框做索引对应,才会出现所有目标字段都被赋值为第一个源字段值的问题。
解决方案代码
// 精确定位到目标表格,避免干扰页面其他表格 const $targetTable = $('body > table:nth-child(10)'); // 分别获取两组符合规则的输入框集合 const $currentQtyList = $targetTable.find('tr:nth-child(7n+3) td:nth-child(2) form input[type=text]:nth-child(2)'); const $moveQtyList = $targetTable.find('tr:nth-child(7n+6) td:nth-child(3) input[type=text]:nth-child(1)'); // 按索引一一对应赋值 $currentQtyList.each(function (index) { $moveQtyList.eq(index).val($(this).val()); });
逻辑说明
- 先锁定你需要操作的第10个表格,选择范围限定在该表格内,避免全局选择误匹配其他元素
- 用你已经验证过的7n规则选择两组输入框,得到的集合顺序和你需要的一一对应关系完全一致
- 遍历源字段集合时,通过
index参数取出对应位置的目标字段赋值,彻底解决匹配错误的问题
该方案直接利用CSS选择器定位元素,不需要自行遍历表格行判断位置,性能和可维护性都比较好。
内容的提问来源于stack exchange,提问作者Michael Warren
相关产品推荐
相关产品推荐

