使用jQuery循环遍历表,使用选中的复选框连续更新特定单元格

时间:2010-09-30 16:27:55

标签: javascript jquery jquery-selectors

我无法解决这个问题。我有一个带有一列复选框的表。在Ajax更新之后,我想用已检查的复选框更新行中的特定单元格。我正在使用的jQuery Ajax调用是:

$.ajax({
        type: 'POST',
        url: 'ProcessDate',
        data: params,
        error: function(xhr, ajaxOptions, thrownError) {
               alert(xhr.statusText);
          },

         success: function(html) {
                  closeDialog();
                  $('#results tbody tr').each(function(){
                         $("#CaseID:checked").parent().siblings("td.DateUpdated").html('CHANGE'); 
            });
        },
        cache: false
     });

HTML是:

<table id="results">
  <tr>
     <td><input type="checkbox" id="CaseID"></td>
     <td id="DateUpdated"></td>
  </tr>
  <tr>
     <td><input type="checkbox" id="CaseID"></td>
     <td id="DateUpdated"></td>
  </tr>
  <tr>
     <td><input type="checkbox" id="CaseID"></td>
     <td id="DateUpdated"></td>
  </tr>

Ajax调用成功但我的表更新没有发生。

1 个答案:

答案 0 :(得分:0)

首先,使用类,因为Ids必须是唯一的,如下所示:

<tr>
  <td><input type="checkbox" class="CaseID"></td>
  <td class="DateUpdated"></td>
</tr>

然后使用类选择器,如下所示:

$.ajax({
  type: 'POST',
  url: 'ProcessDate',
  data: params,
  error: function(xhr, ajaxOptions, thrownError) {
    alert(xhr.statusText);
  },
  success: function(html) {
    closeDialog();
    $(".CaseID:checked").parent().siblings("td.DateUpdated").html('CHANGE'); 
  },
  cache: false
});

不需要.each()循环,至少不需要你的示例代码......类选择器将获得你想要的所有元素,无论行是什么。