2

我试图定位一个表中的最后一个父表行,其中包含子表行元素。我已经尝试使用下面的 jQuery 来定位 :last 伪,但是,正如预期的那样,它的目标是目标父表中的绝对最后一个表行元素。

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

我已经将 jsFiddle 与我尝试使用 jQuery 定位的 HTML 块放在一起,我希望它会有所帮助! http://jsfiddle.net/jodriscoll/LZA7e/

绿色 = 目标; 红色 = 忽略 绿色表行是我想要定位的行,但是,以红色突出显示的行是明显接受课程的行。

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

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

4

5 回答 5

3

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

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

演示

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

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

演示

于 2013-05-29T16:48:15.603 回答
1

.children() 你想要做什么?

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

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

于 2013-05-29T16:48:37.353 回答
1

不要使用find. 它将查看任何深度,并且可能匹配意外的子表。也许它适用于您的示例,但您不想养成坏习惯。另外,find这将比有针对性的方法成本更高。

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

var targetTd = $('table[id*="dgRegistrantList"]').children('tbody').children('tr:last').find('table:first').children('tbody').children('td:last');
于 2013-05-29T16:49:58.510 回答
1

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

$('table[id*="dgRegistrantList"]').find('tr[class^=BBList]:last').addClass('EventRegLastAttendee');
于 2013-05-29T17:13:25.223 回答
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
于 2013-05-29T16:46:28.587 回答