2012-03-21 71 views
2

我正在使用jQuery和AJAX向表中添加行。我在函數中有以下代碼。無法附加到使用jQuery的追加元素

var fila='<tr>'; 
fila+='<td><select id="listaPagares'+cantFilas+'"></select></td>'; //Keep this in mind 
fila+='<td><select id="listaCuotas'+cantFilas+'"></select></td>'; 
fila+='<td><input type="text" name="valor'+cantFilas+'" id=」valor'+cantFilas+'" /></td>'; 
fila+='<td id="desc'+cantFilas+'"></td>'; 
fila+='<td id=」total'+cantFilas+'"></td>'; 
fila+='</tr>'; 
$('#lineaDetalle tbody').append(fila); 

之後,我做了一個AJAX請求。這個相同的請求在另一個表中使用,所以我非常確定搜索工作的XML標籤。請參閱上面的「listaPagares [i]」選擇行?在同一個函數中,我在AJAX請求的成功部分中執行下面的一些行。

$(xml).find('data').each(function() 
{ 
    var errmsg = $(this).find('rowsfound').text(); 
    if(errmsg!='yes') 
    { 
     if(errmsg=='no') 
     { 
      $('#error').text('No se encontraron pagarés.'); 
     } 
     else 
     { 
      $('#error').text('Rut del alumno o del apoderado erróneos.'); 
     } 
     $('#errmsg').show(500); 
    } 
    else 
    { 
     $(this).find('pagare').each(function() 
     { 
      $('#listaPagares'+cantFilas).append('<option value="'+$(this).find('numpagare').text()+'-'+$(this).find('rbd').text()+'">PAGARÉ N° '+$(this).find('numpagare').text()+' '+$(this).find('nomcolegio').text()+'</option>'); 
     }); 
    } 
}); 

但是,當我按下添加新行的按鈕時,第二個附加位置我將選項添加到選擇不起作用。我也很確定這個程序是通過這一行的,我在它之前添加了一個警報並顯示。可能是什麼?先謝謝你。

編輯:我在成功條款裏面添加了整個程序,所以你可以看到我爲什麼使用「this」。

+3

這有什麼錯你引號?你在Word中編寫代碼? – elclanrs 2012-03-21 01:35:23

+0

咦?你的意思是單引號?讓我解決這個問題。 – 2012-03-21 01:36:42

+0

好的,修好了。 – 2012-03-21 01:39:38

回答

0

我的解決辦法如下:

我聲明爲「cuotas」我想追加任何之前的全局數組。所以,這種情況會發生:

$('#pagares').change(function() 
{ 
    $('#errmsg').append(cargaAjax); 
    return encPagos(); 
    $('#errmsg:last-child').remove(); 
}); 

在encPagos發生這種情況:

$('#pagosHechos table tbody').empty(); 
arrCuotas=[]; 
$(this).find('pagos').each(function() 
{ 
    $(this).find('pago').each(function() 
    { 
     $('#pagosHechos table tbody').append('<tr><td>'+$(this).find('concepto').text()+'</td><td>'+$(this).find('valor').text()+'</td><td>'+$(this).find('pagado').text()+'</td><td>'+$(this).find('dif').text()+'</td><td>'+$(this).find('fvenc').text()+'</td></tr>'); 
     arrCuotas.push($(this).find('concepto').text());  
    }); 
}); 

所以,每當我添加一行,我只有這樣做:

var fila='<tr>'; 
fila+='<td><select id="listaCuotas'+cantFilas+'" name="listaCuotas'+cantFilas+'">'; 
for(i=0;i<arrCuotas.length;i++) 
{ 
    fila+='<option value="'+(i+1)+'">'+arrCuotas[i]+'</option>'; 
} 
fila+='</select></td>'; 
fila+='<td><input type="text" name="valor'+cantFilas+'" id="valor'+cantFilas+'" /></td>'; 
fila+='<td id="desc'+cantFilas+'">'+desc+'%</td>'; 
fila+='<td id="total'+cantFilas+'"></td>'; 
fila+='</tr>' 
0

您不能在append()之內使用$(this)。另外,你缺失或者是#.find()

... $(this).find('numpagare') ... // `#numpagare` or `.numpagare` 

緩存您的選擇第一,這樣做,而不是:

var $el = $('#listaPagares' + cantFilas), 
    numPagare = $el.find('.numpagare').text(), 
    nomColegio = $el.find('.nomcolegio').text(), 
    rbd = $el.find('.rbd').text(), 
    html = '<option value="' + numPagare + '-' + rbd + '">' + 
      'PAGARÉ N° ' + numPagare + ' ' + nomColegio + 
      '</option>'; 

$el.append(html); 

不它看起來更好?

+0

哦。 $(this)選擇器是因爲它在每個函數中。讓我編輯上面,所以你可以看到我的意思。 – 2012-03-21 01:51:05

+0

我的編輯,你錯過了東西,語法錯誤......這可能是你的問題。 – elclanrs 2012-03-21 01:52:18

+0

我不想念他們。該查找查找XML標籤。另外append(option)部分在另一個地方工作,但不在這裏。 – 2012-03-21 01:57:51