jQuery’s: primero y: último en los primeros hijos de un elemento

Tengo algunas tablas simples (múltiples, todas con clase = “padre”) con varias filas

. Las celdas

dentro de estas filas tienen tablas propias. Estoy tratando de apuntar a las

filas de las primeras tablas (padre), así:

HTML:

  <-- match with :first  <-- match with :last 
<-- so ignore this child .. <-- .. and do NOT match this with :last

jQuery:

 $('table.parent').each(function() { $(this).find('tr:first').dostuff(); $(this).find('tr:last').dostuff(); }); 

El :first

funciona bien, ya que siempre es el

del padre. Pero cuando bash seleccionar la :last

, coincidirá con la última

de la tabla anidada, y no con la última

de la tabla primaria. ¿Cómo puedo decirle a jQuery que solo mire los

que están en la tabla principal y no busque más en las posibles tablas secundarias?

En lugar de .find() (que encuentra a todos los descendientes ), intente .children() que solo encuentra hijos directos:

 $(this).children('tr:first').dostuff(); 

Le sugeriría que modifique un poco su selector para asegurarse de que funciona en los navegadores que agregan un

a las tablas (como Firefox y Chrome):

 //tested $('table.parent > tbody').each(function() { $(this).children('tr:first').text('hello').css('background-color', 'red'); $(this).children('tr:last').text('hello').css('background-color', 'red'); });