2013-08-28 4 views
1

У меня есть сценарий jquery, который возвращает количество строк в таблице, а затем устанавливает это число внутри тега <td>.Обновление строки таблицы html с jquery

<tr> 
<td id = "jquery"> 

</td> 
<td> 
    <%= f.text_field :data1 %> 
</td> 
<td> 
    <%= f.text_field :data2 %> 
</td> 
    <td> 
    <%= f.text_field :data3 %> 
</td> 
</tr> 
<script> 
    var rowCount = $('#myTable tr').length 
    $("#jquery").html(rowCount);  
</script> 

Этот скрипт работает, но когда я сделать этот вид еще раз, чтобы добавить еще одну строку MYTABLE, он обновляет только первую строку вместо следующей строки с rowCount. Любые идеи, как это исправить?

+0

Вы хотите отобразить сверку в TD всех строк? – Farhan

+0

Мне непонятно, что вы пытаетесь сделать, когда говорите «только обновляет первую строку», что делает? Добавление новой строки с каким кодом? –

+0

Да. Но я хотел бы, чтобы предыдущая строка была в предыдущей строке. Текущая строка подсчитывается в самой последней строке. – DashControl

ответ

2

Вы снова добавляете одну и ту же строку, так что будет 2 tr с тем же идентификатором, что и jquery, в этом случае выбирает только первый элемент с данным ID.

Таким образом, вместо идентификатора обеспечивают класс = «JQuery», а затем запустить скрипт:

<td class= "jquery"> 

и

<script> 
    $('tr').each(function(){ 
    var index= $('table').children('tr').index($(this)) 
    var position= index+1; 
    $(this).children('td').first().html(position); 
    }) 
</script> 
+0

Это правильно. Идентификаторы должны появляться только один раз на странице, и jQuery будет захватывать только первый найденный. – Andrew

+0

Это обновление всех строк с текущей 'rowcount'. Мне нужно обновить предыдущие строки со старой «rowcount». – DashControl

+0

Вы имеете в виду, что первые строки td будут отображаться 1, вторые строки td будут отображаться 2 и так далее? – Farhan

1

Используйте вместо текущего кода необходимо, что только устанавливает первый элемент от идентификатора jquery.

, если вы хотите, чтобы каждый первый TD, чтобы иметь общее количество:

var count = $("#mytable tr").length; 
$("#mytable tr > td:first-child").html(count); 

каждый первый TD имеет индекс строки номер

$("#mytable tr").each(function(){ 
    $(this).children("td").first().html($(this).index()); 
}); 

там может быть более короткой цепью для выше, но я могу» Думаю об одном в данный момент. , если вы хотите, чтобы нулевой начальный индекс просто использовал .index()+1.

JSFiddle Demo

+0

Выбирает лучшее решение, и ему не нужно называть td с идентификатором. –

+0

да, но hes подсчитывает строки, я думал, что он подсчитывает tds, так что это неправильно, редактирование, чтобы сделать правильный –

+0

да, считая trs – DashControl