2012-03-21 135 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