javascript - 如何在 html 上动态添加字段的 javascript 中匹配 id?

标签 javascript jquery html ruby-on-rails

在我们的 Rails 应用程序中,可以将动态字段添加到表单中。以下是动态添加字段 order_order_items_attributes_1413563163040_unit_price 的 html 源代码:

<div class="input decimal required order_order_items_unit_price">
<label class="decimal required control-label" for="order_order_items_attributes_1413563163040_unit_price">
<abbr title="required">*</abbr>
Unit Price($)
</label>
<input id="order_order_items_attributes_1413563163040_unit_price" class="numeric decimal required span5 span5" type="number" step="any" name="order[order_items_attributes][1413563163040][unit_price]">
</div>

可以看到,字段的id中有13位数字的字符串,它是在添加字段时随机生成的。我们如何在 JavaScript 中匹配(定位)这种类型的随机 id? Rails 应用使用 jquery(例如,$('#order_order_items_attributes_xxxxxxxxxxxxx_unit_price').change(function (){}))。

我们对这种 css 类型的 id 匹配很陌生。更详细的信息将不胜感激。

最佳答案

您必须首先决定使用什么算法来匹配 id 值。根据您的评论(您的问题中没有明确指定),您似乎想要查找以 "order_order_items_attributes_" 开头并以 "_unit_price" 结尾的所有 id,并且它们之间有一个数字序列。

您可以通过查找所有以您想要的内容开头的 id,然后将它们过滤为仅匹配所有三个条件的内容来做到这一点:

// find ids that match this pattern: order_order_items_attributes_xxxxxxxxxxxxx_unit_price
var orderItemRegex = /^order_supplier_id_\d+_unit_price$/;
$("[id^='order_supplier_id_']").filter(function(index) {
    return orderItemRegex.test(this.id);
}).change(function() {
    // this will be only the ids that match
});

这使用 jQuery 来创建 ID 以“order_supplier_id_”开头的所有对象的列表。然后,它会过滤该列表,消除与定义模式的完整正则表达式 /^order_supplier_id_\d+_unit_price$/ 不匹配的任何对象,然后连接 .change() 仅针对通过正则表达式测试的对象的事件处理程序。

关于javascript - 如何在 html 上动态添加字段的 javascript 中匹配 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429673/

相关文章:

javascript - jQuery slider 未知

javascript - 在 greasemonkey 中使用 jQuery 插件(即 tipsy)

html - 为什么 link 元素中的 media 属性对 print 值不起作用?

html - Bootstrap Tabs 不工作但代码看起来不错

javascript - jQuery - 添加/附加值到 "rel"属性

javascript - 检测文本区域和输入中的链接

jquery - Fay JQuery 处理元素数组

html - 双正斜杠符号//的 HTML 代码是什么?

javascript - 范围错误 : Maximum call stack size exceeded for Node. js

javascript - 使用自动提交设置 jQuery cookie