En primer lugar, tienes que evitar repetir el
id
; ten en cuenta que se trata de un dato único en el documento HTML, y que al momento de registrar un evento en Javascript o un estilo en CSS, de todos los elementos que tengan el mismo identificador, solo se verá afectado el primero de ellos. Por otra parte, en lugar de registrar el evento y función directamente en el elemento, emplea los métodos de jQuery para delegar eventos.
Por ejemplo, podrías agregar tanto el botón como el
<div>
en un mismo contenedor:
A diferencia del atributo
id
, una
class
sí puede repetirse, de tal forma que puedes agregar varios grupos de elementos con las mismas clases:
Ahora, tan solo queda apoyarse en las clases para delegar eventos y funciones:
Código Javascript
:
Ver original$(".group").on("click", ".show", function(){
$(this).next().toggle();
});
Con lo anterior, se registra el evento
click
en el elemento de clase
show
contenido en el elemento de clase
group
, ejecutándose una función en la cual se toma al elemento contiguo (el
<div>
de clase
info
) al botón pulsado (método
.next()
), y se le muestra u oculta (según si el elemento se encuentra visible o no) mediante el método
.toggle()
.
No olvides registrar el estilo que oculte a los
<div>
de clase
info
:
DEMO
Procura no registrar eventos y estilos en los mismos elementos HTML sino en archivos JS y CSS.