2012-04-15 21 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

相关问题