2010-05-19 82 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這種情況下,一個ID必須具有唯一性(這是無效的HTML和否則將給出一些怪異的行爲),像這樣:

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

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

謝謝您。它現在就像魅力一樣。 – jaeyun 2010-05-19 03:45:13

+0

不是真正爲我工作,類似設置... – ied3vil 2015-05-28 10:56:36

-1

如果你需要的是循環的新行,你可以這樣做:

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

這將創建無效的HTML ... – 2010-05-19 01:10:47

+0

多個ID? #shame :) – 2010-05-19 01:13:26

+0

我不明白這個答案。爲了正確,只需要一個'#newRow',這似乎使循環成爲一個奇怪的選擇。 – user113716 2010-05-19 01:13:55

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'); 
    }); 
    }); 
});