您可以找到正在更改的元素的 id,然后提取其中的数字部分以用于其余的计算。这是我更改的方面和工作版本。:
var uniqueOne = $(this).attr("id").match(/\d+/);
$("[id^=quant_][id$="+uniqueOne+"]").text($("input[id^=qty_item_][id$="+uniqueOne+"]").val());
虽然不是最干净的代码,但它的作用是找到以 quant_ 开头并以 uniqueOne 结尾的 id。您可能可以压缩这些,但它突出显示了结合两个选择器(开头和结尾)。
看起来你有很多很棒的想法可供选择。
编辑:
如果您的 id 不以 qty_item_ 开头,那么您需要使用不同的选择器。这个最容易实现的目标是contains 选择器: id*=blah
。
带有“总”ID 的更新版本可以找到:http: //jsfiddle.net/6ms4T/22/
编辑:
以前的 jsfiddle 没有按预期处理更新总数。此更新版本应通过识别所有通过 ID 查找 DOM 元素的情况来减少混淆;但是,很有可能应该对其进行重构:http: //jsfiddle.net/6ms4T/24/。
编辑:
OP 的标签在他的 ID 中生成了各种数字和字母,但最后的数字前面有一个下划线。因此,使用 regex 找到了重要的 id /\d+$/
。正如其他海报所示,解决这个问题的方法不止一种。我个人喜欢用户 gabitzish 的。