2010-05-19 2 views
3

Я пытаюсь добавить новые строки в таблицу и сохранить их в БД.jquery итерирование через созданные элементы

Во-первых, я использую .append() для добавления строк в таблице:

$("#tablename").append("<tr id='newRow'><td>newly added row</td></tr>"); 

прилагаемой функция работает отлично. На моей странице отображается правильный результат.

Однако, я не могу выбрать их с

$("#newRow").each(function() { alert "it never reaches here!"; }); 

Я предполагаю, что это происходит потому, что элементы добавляются после загрузки DOM. Может ли кто-нибудь рассказать мне, как я могу перебирать все мои недавно добавленные элементы?

спасибо.

ответ

10

Вы должны использовать class для этого случая, идентификатор должен быть уникальным (это недопустимый HTML и даст некоторое странное поведение в противном случае), как это:

$("#tablename").append("<tr class='newRow'><td>newly added row</td></tr>"); 

$(".newRow").each(function() { alert "it never reaches here!"; }); 
+0

Спасибо вы. Теперь он работает как шарм. – jaeyun

+0

не работает для меня, аналогично настроен ... – ied3vil

-1

Если все, что вам нужно, это петля новые строки вы можете сделать это:

var rows = $("<tr class='newRow'><td>newly added row</td></tr>").appendTo('#tablename'); 
rows.each(function() { alert "it never reaches here!"; }); 
+2

Это создаст неверный HTML ... –

+0

Несколько идентификаторов? #shame :) –

+0

Я не понимаю этого ответа. Чтобы быть верным, нужно было бы только один '# newRow', который, казалось бы, сделал бы цикл нечетным выбором. – user113716

1

метод Ник работает просто отлично, вот еще:

$(function(){ 
    //add a class to mark the last row on load 
    $('#tableName tr:last').addClass('lastRow'); 

    // ... 

    // select new rows when you click save 
    $('input:submit').click(function(){ 
    $('#tableName tr.lastRow').nextAll().each(function(){ 
     alert('added row'); 
    }); 
    }); 
}); 
Смежные вопросы