2010-07-26 8 views
5

¿Hay un selector padre jQuery que atraviesa el DOM hasta que se encuentra la primera coincidencia?jQuery selectores principales

Ej:

<tr> 
    <td> 
     <div id="foo">hello!</div> 
    </td> 
</tr> 

para encontrar la fila de la div que estoy utilizando:

$('#foo').parent().parent();

Se siente como si tuviera que ser capaz de escribir algo como

$('#foo').firstParent('tr');

pero no puedo encontrar un y tal función en los documentos.

Respuesta

6

Puede utilizar .closest() para esto:

$('#foo').closest('tr'); 

Si ayuda, hay una categoría específica para que esto reducirá las búsquedas futuras para: Tree Traversal

+0

Gracias y saludos por el enlace árbol de enlace. Nunca lo habría encontrado, parece una función mal llamada imho. – fearofawhackplanet

+0

@patrick - ¡Woops, gracias! –

+0

@fearofawhackplanet - Cuando busca en la API: http://api.jquery.com/ encuentra una función que sabe que está en la misma área, ya la derecha tendrá enlaces a las categorías a las que pertenece, eso es generalmente la ruta más rápida :) –

1
$(element).parents('TR:first'); 

Editar: O lo que Nick dijo a continuación - se olvidó de ese tonto.

+0

+1 - Este es el equivalente a largo plazo de '.closest ('tr')' así que ciertamente un enfoque válido :) –

0
$('#foo').parent('tr') 
+0

Esto no se comporta como la mayoría de la gente espera, selecciona el padre * si * es un '', si no es un '' obtienes un conjunto vacío. El selector es un filtro, en lugar de un término de búsqueda, es equivalente a '.parent(). Filter ('tr')' para ese paso :) –