2013-06-01 93 views
0

可能的东西真的很愚蠢,但假设我有两个元素匹配$('[id $ = _ product_id]')为什么变化事件没有正确匹配?OnChange事件似乎没有正确吸引

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/

我缺少一个小提琴?

回答

2

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

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

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

+0

的确是工作,肯定会需要阅读起来在这。谢谢! – rept

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); 
    }) 
});