Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/11/2014, 19:50
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ocultar elemento al hacer clic fuera

Un pequeño ejemplo:

Código HTML:
Ver original
  1. <button>Mostrar/Ocultar</button>
  2. <div></div>

Código CSS:
Ver original
  1. div{
  2.     width: 20rem;
  3.     height: 15rem;
  4.     background: black;
  5.     display: none;
  6. }

Código Javascript:
Ver original
  1. var div = document.querySelector("div"),
  2.     button = document.querySelector("button");
  3.  
  4. window.addEventListener("click", function(event){
  5.     var objetivo = event.target;
  6.     if (objetivo != div && objetivo != button) div.style.display = "none";
  7. }, false);
  8.  
  9. button.addEventListener("click", function(){
  10.     var visible = getComputedStyle(div).display;
  11.     div.style.display = visible == "block" ? "none" : "block";
  12. }, false);

Tenemos una división y un botón. En la hoja de estilos, a la división, le aplico dimensiones, un color de fondo y la oculto. En el código JS, tomo a ambos elementos y los asigno a variables. Luego, cuando demos un clic en alguna parte de la ventana, tomamos el lugar afectado y si este no es la división ni el botón, procedemos a ocultar a la división. Por otra parte, cuando demos clic al botón, tomamos el estilo computado de la división, correspondiente a la propiedad display. Luego, si esta es igual a 'block', le asignamos 'none' a la división, caso contrario, 'block'.

DEMO

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