2012-03-21 26 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>'); 
     }); 
    } 
}); 

しかし、私は選択にオプションを追加二APPENDは動作しません。私はまた、プログラムがその行を通過することをかなり確信しています、私はそれの前に警告を追加し、それが表示されます。何が誇り?前もって感謝します。

編集:私はsuccess句の中にプロシージャ全体を追加したので、なぜ私は "this"を使用しているのか分かります。

+3

の何が問題なのあなた引用符?? Wordでコードを書いていますか? – elclanrs

+0

?一重引用符を意味しますか? Lemmeはそれを修正した。 –

+0

申し訳ありません。 –

答えて

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

$(this)append()のように使用できません。プラスあなたは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)セレクタは、各関数の内部にあるためです。あなたが私が何を意味するかを見ることができるように上記を編集させてください。 –

+0

私の編集、あなたが欠けている、構文エラー...それはあなたの問題かもしれません。 – elclanrs

+0

私はそれらを紛失していません。 findはXMLタグを探します。また、append(option)パートは別の場所で動作しますが、ここでは動作しません。 –

関連する問題