2013-06-01 63 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); 
    }) 
});