定位最后一个PARENT表行(tr),而不是CHILD表行(tr)

时间:2013-05-29 16:37:38

标签: javascript jquery

我正在尝试定位其中包含子表行元素的表中的最后一个父表行。我已经尝试过以下jQuery来定位:last伪,然而,就像预期的那样,它是针对目标父表中的绝对最后一个表行元素。

$('table[id*="dgRegistrantList"]').find('tr:last').addClass('EventRegLastAttendee')

我已经将jsFiddle与我试图用jQuery作为目标的HTML块放在一起,我希望它有用! http://jsfiddle.net/jodriscoll/LZA7e/

Green = Target; Red = Ignore Green table-row是我想要定位的那一行,但是,Red中突出显示的那个是接收该类的明显行。

此系统可以根据此“步骤”之前的用户选择生成表行的变体。有关我正在使用的完整示例,请访问:http://secure.massgeneral.org/event-form(我正在使用第2步)。

请注意,我正在使用的HTML是由我作为客户的CMS软件生成的,无法更改。因此,这个jQuery练习的目的。

5 个答案:

答案 0 :(得分:3)

如果所有父<tr>元素都有类BBListOddRowStyleBBListEvenRowStyle,您可以这样做:

$('table[id*="dgRegistrantList"]').find('tr[class*=RowStyle]:last')
    .addClass('EventRegLastAttendee')

<强> DEMO

如果没有,您可以使用.children()两次以确保定位正确的目标:

$('table[id*="dgRegistrantList"]').children('tbody')
    .children('tr:last').addClass('EventRegLastAttendee')

<强> DEMO

答案 1 :(得分:1)

使用此代码定位最后一行:

$('table[id*="dgRegistrantList"]').find('tr[class^=BBList][class$=RowStyle]:last').addClass('EventRegLastAttendee')

<强>解释

tr //it will look for tr
[class^=BBList] //which class starts with BBList
[class$=RowStyle] //and ends with RowStyle (so we're leaving Odd and Even inside and not recognized)
:last //the last of those element, if you remove it you select all of them

答案 2 :(得分:1)

.children()你想做什么?

$('table[id*="dgRegistrantList"]').children('tr:last').addClass('EventRegLastAttendee');

.children()仅降低一个dom级别,而.find()将尽可能降低。

答案 3 :(得分:1)

不要使用find。它会查看任何深度,它可能与非预期的子表匹配。也许这对你的榜样有用,但你不想养成坏习惯。另外,find比目标方法更昂贵。

您需要更有针对性的方法:

var targetTd = $('table[id*="dgRegistrantList"]').children('tbody').children('tr:last').find('table:first').children('tbody').children('td:last');

答案 4 :(得分:1)

使用此代码将父级tr定位到最后一行

$('table[id*="dgRegistrantList"]').find('tr[class^=BBList]:last').addClass('EventRegLastAttendee');