2

内部に子テーブル行要素があるテーブル内の最後の親テーブル行をターゲットにしようとしています。以下の jQuery を試して :last 疑似をターゲットにしましたが、予想どおり、ターゲットの親テーブル内の絶対的な最後のテーブル行要素をターゲットにしています。

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

jQuery でターゲットにしようとしている HTML ブロックと jsFiddle をまとめました。 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()正しいものを確実にターゲットにするために 2 回使用できます。

$('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() は 1 つの 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 に答える