あなたの問題は、クラスの命名です。この作業フィドルを参照してくださいhttp://jsfiddle.net/ZFWU7/5/
td と入力の両方に名前を付ける.form_id
ことで、それらすべてを反復処理します。
$('td.form_id').each(function(i){
$(this).text(i+1);
});
セレクターをより具体的にする
あなたのコメントによると、私はあなたの「順序付け」機能を、その動作を2つのアノノミー機能の一部にするのではなく、明示的に定義された独自の機能に分離します。あなたはDRYルールをうまく守っていません。以下の(フィドルから)よりクリーンで保守しやすい方法でコードを書き直しました。これは少しだけ良くなります。グローバル名前空間で関数を宣言することは、あまり良い方法ではありません。「コントローラー」のグループに名前を付ける方がよいでしょう。 http://addyosmani.com/blog/essential-js-namespacing/
$(document).ready(function() {
$("#add-line").click(addRow);
});
function updateRowOrder(){
$('td.form_id').each(function(i){
$(this).text(i+1);
});
}
function addRow(){
var template = $('#template'),
id = 0;
if(!template.is(':visible'))
{
template.show();
return;
}
var row = template.clone();
template.find("input:text").val("");
row.attr('id', 'row_' + (++id));
template.before(row);
var i=1;
updateRowOrder();
$('.form-fields').on('click', '.remove', removeRow);
}
function removeRow(){
var row = $(this).closest('tr');
if(row.attr('id') == 'template')
{
row.hide();
}
else
{
row.remove();
}
updateRowOrder();
}