2009-11-09 84 views
2

我有以下找到最后一个TR(集团)

<tr id="group_1>...</tr> 
    <tr id="el">...</tr> 
    <tr id="el">...<tr> 
<tr id="group_2"></tr> 
    <tr id="el">...</tr> 
<tr id="group_1>...</tr> 
    <tr id="el">...</tr> 
    <tr id="el">...<tr> 

我需要找到各组的最后一个TR表

$("tr#group_"+groupID).next("tr#el:last").after("ADD NEW TR"); 

它不是为我工作!

我想这是因为我用于所有组相同的ID。

任何人都可以帮助我。

谢谢

回答

6

那么首先ID必须是独特的行为在上面的例子中将会是未定义的。其次,这是对行进行分组的困难途径。尝试使用TBODY元素代替>

<tbody id="group_2"> 
    <tr>...</tr> 
    <tr>...<tr> 
</tbody> 
<tbody id="group_2"> 
    <tr>...</tr> 
</tbody> 
<tbody id="group_3"> 
    <tr>...</tr> 
    <tr>...<tr> 
</tbody> 

,然后事情就变得容易得多:

$("#group_" + groupNum + " tr:last-child").after("add new tr"); 

事情是,你甚至都不需要做这种方式(使用after())。它更容易使用append()做到这一点:

$("#group_" + groupNum).append("add new tr"); 
+0

伟大的思想想象一样 – Greg 2009-11-09 10:59:48

+0

感谢wornikg罚款! – ntan 2009-11-09 12:17:02

1

你不能重复使用这样的ID。尝试改为改为类。

这也可能是值得投入一些<tbody>在里面:

<tr id="group_1>...</tr> 
<tbody id="group_1_tbody"> 
    <tr class="el">...</tr> 
    <tr class="el">...<tr> 
</tbody> 
<tr id="group_2"></tr> 
<tbody id="group_2_tbody"> 
    <tr class="el">...</tr> 
</tbody> 

那么你可以做

$('group_' + groupID + '_tbody tr:last') 

或更容易:

$('group_' + groupID + '_tbody').append('NEW TR') 
+0

+1什么bobince说。根据我的回答,我认为group_#行是不必要的,并且会建议OP只使用TBODY元素组而不是创建TBODY和TR元素。 – cletus 2009-11-09 11:02:42

1

ID必须是特定网页上是独一无二的。由于ID是唯一的,因此当您按ID标识元素时,您也不需要指定标签。

简单的形式(一旦你摆脱那些重复的ID)的是:

$("#group_"+groupID).children("tr:last").after("ADD NEW TR");