Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/06/2014, 11:41
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 4 meses
Puntos: 977
Respuesta: Problema con evento: tengo que dar 2 clic para que funcione!

Otra alternativa de solución:

Código Javascript:
Ver original
  1. var divs = document.querySelectorAll(".div_1b_y2b"),
  2.     buttons = document.querySelectorAll(".disparador");
  3. Array.prototype.forEach.call(buttons, function(button){
  4.     button.addEventListener("click", function(){
  5.         Array.prototype.forEach.call(divs, function(div){
  6.             var numDiv = div.id.substr(div.id.length - 2, 1),
  7.                 numBut = button.id.substr(button.id.length - 2, 1),
  8.                 altura = div.style.height || "0px";
  9.             if (numDiv == numBut) div.style.height = altura != "0px" ? "0px" : "100px";
  10.             else div.style.height = "0px";
  11.         });    
  12.     }, false);
  13. });

Asigno una clase a los <div> en los que se darán los clics, los tomo junto con los <div> que se mostrarán/ocultarán y a cada <div> que clickearé, le asigno una función cuando se produzca el evento click. Cuando esto suceda, recorro al conjunto de elementos <div> a mostrar/ocultar y obtengo el número que se encuentra en su id una posición antes del final y lo mismo hago con el <div> disparador. Además, obtengo la altura del <div> a mostrar/ocultar o le asigno el valor "0px" si es que no se le ha definido dicho valor. Si los números obtenidos de los id de los elementos en cuestión son iguales, realizo otra condición; si la altura es distinta a "0px", lo cual quiere decir que ya es visible, le asigno el valor "0px" como altura, ocultándolo, caso contrario, le asigno "100px" de altura, mostrándolo. Si los números son diferentes, le asigno el valor "0px", ocultándolo.



Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand