2014-02-19 73 views
1

我有一個帶複選框和文本框的表格。頁面加載時禁用複選框。他們的ID分配使用for:在我的jsp中的每個循環。我想在複選框的相應行上的文本框更改值時啓用複選框。這裏是我的代碼:for循環中的jQuery選擇器

for (var i = 0; i < listSize; i++) { 
      $("#doctorName" + i).on('change', function(){ 
        $("#rowCheck" + i).prop('disabled', false); 
      }); 
     } 

如果我替換$("#rowCheck" + i) with $("#rowCheck0"),它啓用複選框。我不想硬編碼每個複選框ID,因爲我渲染的行數不確定。

+1

有關事件的一個循環的問題,另外一個問題。 – Jai

+1

請閱讀關於關閉 –

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures#Creating_closures_in_loops.3A_A_common_mistake –

回答

0

這可能是一個更好的方法爲您的上下文。

嘗試,

$("[id^='doctorName']").on('change', function(){ 
     var id = this.id; 
     $("#rowCheck" + id.charAt(id.length - 1)).prop('disabled', false); 
}); 
+0

哇。我從來沒有想過我會很快得到答案!謝謝你,先生!我剛開始學習JQuery和JavaScript btw。 – dilm

+0

@ user3326840很高興爲您提供幫助。 –

0

最簡單的答案是封閉塊在另一個功能:

for (var index = 0; index < listSize; index++) { 
    (function(i){ 
      $("#doctorName" + i).on('change', function(){ 
        $("#rowCheck" + i).prop('disabled', false); 
      }); 

    }(index) 
}