2012-04-15 25 views
0

我有一個動態構建的表,我想要的是,當我點擊時,一個函數執行,給我每行的最後一列的ID,我用以下代碼提醒每個列的ID,但它不起作用。誰能幫我 ????這是在函數中使用循環不能得到表中每一行的最後一列的ID

$('table[id="' + tableID + '"]').find('tr').each(function() { 
     alert($('td:last-child').attr("id")); 

    }); 

我所得到的警示是第一行的最後一列在循環的每次迭代中的ID

+1

我很挑剔,但如果你正在尋找一個元素的ID沒有必要做$('table [id =「mytableid」]'),文檔中的所有id(應該是)唯一的,所以在那裏不需要先按表過濾它。只要做$('#mytableid')。這也是更快http://jsperf.com/selectors-tag-or-not(不是你會發現在大多數情況下的差異..) – 2012-04-15 15:47:02

回答

0

另一些行動可能是:

$('table#'+ tableID +' tr').each(function() { 
    var lastCellOfCurrentRowId = $(this).find('td:last-child').attr("id"); 
}); 

重要的是$(thi s)在每個迭代器中。它引用迭代中的當前元素,例如表中的每個行元素(TR)。從這個元素你可以做任何你需要的,因爲這種情況下只需找到最後一個單元ID。

0

試試這個

$('table[id="' + tableID + '"] tr').each(function() { 
    alert($('td:last-child').attr("id")); 
}); 
0

您需要爲選擇器指定上下文,以便您正在查找.each()函數查看的當前行內部的最後一個<td>,因此請將其更改爲:

alert($('td:last-child', this).attr("id")); 
+0

是的,它的工作,但我不明白什麼是上下文的意思,在每次迭代中,上下文都會被.each()自動更改,所以爲什麼我們需要明確地提及它 – zeeshan 2012-04-15 15:32:28

+0

@zeeshan當您使用選擇器調用jQuery函數時,您正在搜索文檔,除非您明確指定上下文(一個jQuery對象或DOM元素)來限制搜索。所以'.each()'的每次迭代都是它自己的上下文,它不會影響對jQuery函數的調用,也不會影響它在其中搜索的一組元素。 – 2012-04-15 16:15:20

+0

@zeeshan另外,我很好奇(也有點困惑),爲什麼你會接受我作爲問題的答案,然後將其顛倒並選擇一個基本相同的答案,並在我的答案後七分鐘。 – 2012-04-15 16:18:07

0

這將創建一個組的所有最後TD的

$('#mytable tr td:last-child').each(function() { 
    alert(this.id); 
}); 

http://jsfiddle.net/JgtV4/

只要你只是想這樣做,而不是在每個TR

相關問題