[Jquery-Es] Primera consulta, seleccionar elemento

Choan Gálvez choan.galvez en gmail.com
Mie Jun 11 10:18:35 PDT 2008


Hola Claudio.

On 11/06/2008, at 18:44, Claudio A. Salazar Beltrán wrote:

> [...]
> Tengo una serie de h3 que son seguidos de un div con el contenido  
> relativo a
> dicha etiqueta, como el siguiente ejemplo :
>
> < h3 >título 1< / h3 >
> < div id ="uno" > contenido 1 < / div >
> < h3 >título 2< / h3 >
> < div id ="dos" > contenido 2< / div >
> < h3 >titulo 3< / h3 >
> < div id ="tres" > contenido 3 < / div >
>
> Quiero que al hacer click sobre cada h3, su correspondiente div  
> aparezca y
> desaparezca (toggle). Eso es fácil, si es que creo el código para  
> cada h3.
> Mi duda puntual es... ¿ Como lo hago para obtener el mismo resultado  
> sin
> crear el código independiente para cada h3 ?
> ¿ Como selecciono el div que está a continuación del h3 de forma  
> genérica,
> sin tener que hacerlo uno por uno ?

Por partes.

Primero, seleccionas los `h3`

     $('h3');

Y asignas a cada uno de ellos un manejador.

     $('h3')
       .bind(click, click_handler);

En tu manejador, `this` apunta al elemento al que se ha asignado.

     function click_handler(e) {
       $(this).etc();
     }

El método `next` selecciona una colección compuesta por cada uno de  
los elementos que siguen a cada uno de los elementos de la colección  
actual. Esto es:

     $('h3'); // [ h3, h3, h3 ]
     $('h3').next(); // [ div, div, div ]

Y por tanto en tu manejador

     $(this); // [ h3 ]
     $(this).next(); // [ div ]

Para mostrar/ocultar (de una manera básica) un elemento, puedes usar  
el método `toggle`. Así, pues, el manejador quedará en:

     function click_handler(e) {
       $(this)
         .next()
           .toggle();
     }

Ahora solo nos queda "empaquetarlo":

     jQuery(function($) {

       $('h3')
         .bind(click, click_handler);

         function click_handler(e) {
           $(this)
             .next()
               .toggle();
         }
     });

Un saludo.
-- 
Choan Gálvez, que escribe sobre javascript en Scriptia
<http://blog.scriptia.net/>


Más información sobre la lista de distribución Jquery-Es