2010-02-01 25 views
26

Estoy escribiendo $(this).closest('.comment').find('form').toggle('slow'); y el problema es que cada una de las formas del elemento secundario se está alternando. Me gustaría que solo se active la primera forma. el HTML es algo así como la continuación y esta es la de un enlacejquery find para obtener el primer elemento

<div comment> 
<a href> 
<form> 
</form> 
    <a href> 
    <div comment> 
    <form> 
    </form> 
    </div> 
</div> 
+6

Ya obtuvo una buena respuesta a esta, pero la próxima vez tómese el tiempo para mirar la documentación. JQuery está bastante bien documentado, y usted habría encontrado el selector ': first' fácilmente por su propia cuenta si solo lo hubiera estado buscando ... http://docs.jquery.com/Main_Page –

+0

Lo hice y no pude encontrarlo. Soy malo en jquery y esta es mi segunda vez usándolo. Acabo de recoger lo básico y ya paso 1 hora en esta y mi pregunta anterior –

+3

Quizás no buscó en api.jquery.com sino en la documentación anterior en docs.jquery.com, y tengo que aceptar que debido a la estructura de la antigua documentación solía ser muy difícil encontrar funciones simples de API como esta. – nikola

Respuesta

44

puede utilizar cualquiera

$(this).closest('.comment').find('form').eq(0).toggle('slow'); 

o

$(this).closest('.comment').find('form:first').toggle('slow'); 
+0

segunda opción funcionó para mí, tuve que seleccionar primero div jQuery (this) .closest ('. Divmodule'). Find ('div: first'). Attr ('clase')); – charles

+0

FYI, $ ('. Foo: first') es un poco más lento que $ ('. Foo'). First(). http://jsperf.com/jquery-first-vs-first-vs-eq-0-vs-0/2 –

+1

Si realmente te importa el rendimiento, nativo 'getElementsByTagName' es mucho más rápido: http: // jsperf .com/jquery-first-vs-first-vs-eq-0-vs-0/16 –

3

utilizo

$([selector]).slice(0, 1) 

porque es la forma más explícita de seleccionar un rebanada de una consulta y porque puede ser fácilmente modificado para que coincida con el primer elemento no, pero el siguiente, etc.

6

Uso :first selector, como a continuación:

$(this).closest('.comment').find('form:**first**').toggle('slow'); 
0

usando jQuery simplemente utilizar:

$("form").first().toggle('slow'); 
Cuestiones relacionadas