0

可能真的很愚蠢,但假设我有 2 个元素匹配 $('[id$=_product_id]') 为什么更改事件没有正确匹配?

var numberPattern = /\d+/g;

$('[id$=_product_id]').each(function(idx, elem) {
recordId = elem.id.match(numberPattern)
productId = elem.value;         
console.log(recordId);

    $("#client_order_order_lines_attributes_" + recordId + "_product_id").on("change", function(e) {      
      console.log(recordId);
    })
});

我创建了一个小提琴来演示这个http://jsfiddle.net/hLYpE/1/

我错过了什么?

4

2 回答 2

2

需要声明这些变量,这是隐式全局变量的危险。

var recordId = elem.id.match(numberPattern);
var productId = elem.value;

演示:http: //jsfiddle.net/elclanrs/hLYpE/4/

于 2013-06-01T08:08:33.020 回答
2

您应该更改在变量名称前添加 var 的代码:

var numberPattern = /\d+/g;

$('[id$=_product_id]').each(function(idx, elem) {
var recordId = elem.id.match(numberPattern),
    productId = elem.value;         
console.log(recordId);

    $("#client_order_order_lines_attributes_" + recordId + "_product_id").on("change", function(e) {      
      console.log(recordId);
    })
});
于 2013-06-01T08:11:18.793 回答