Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Pulsar fuera y cerrar el menu

Estas en el tema de Pulsar fuera y cerrar el menu en el foro de Frameworks JS en Foros del Web. Buenas, Tengo un problema con este script he conseguido que funcione casi como quiero, pulsas sobre la bandera y te muestra un menu escondido para ...
  #1 (permalink)  
Antiguo 06/12/2010, 04:32
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Pulsar fuera y cerrar el menu

Buenas,

Tengo un problema con este script he conseguido que funcione casi como quiero, pulsas sobre la bandera y te muestra un menu escondido para que marques otro idioma, sin embargo solo se cierra cuando se vuelve a pulsar sobre la bandera.

Se puede hacer que también se cierre si se pulsa fuera, en cualquier otro lugar de la página?

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xml:lang="es" xmlns="http://www.w3.org/1999/xhtml" lang="es"><head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <meta http-equiv="Content-Language" content="es">
  5. <link rel="stylesheet" type="text/css" href="reset-fonts-grids.css">
  6. <link rel="stylesheet" type="text/css" href="common.css">
  7. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  8.      <script language="javascript">
  9.      $(document).ready(function() {
  10.           $('#menutoggle').click(function() {
  11.                if ($('#lngMenu').is(":hidden"))
  12.                {
  13.                     $('#lngMenu').fadeIn('fast');
  14.                } else {
  15.                     $('#lngMenu').fadeOut('fast');
  16.                }
  17.                return false;
  18.           });
  19.      });
  20.      </script>
  21. </head>
  22. <img id="menutoggle" src="es.gif" alt="Language" height="11" width="16">
  23. <ul style="-moz-user-select: none; display: none; top: 63px; left: 656.5px;" id="lngMenu" class="contextMenu">
  24.   <li class=""><a href="http://www.mindomo.com/login.htm?lang=en">English</a></li>
  25.   <li><a href="http://www.mindomo.com/login.htm?lang=de">Deutsch</a></li>
  26.   <li><a href="http://www.mindomo.com/login.htm?lang=es">Español</a></li>
  27.   <li><a href="http://www.mindomo.com/login.htm?lang=fr">Français</a></li>
  28.   <li><a href="http://www.mindomo.com/login.htm?lang=it">Italiano</a></li>
  29.   <li><a href="http://www.mindomo.com/login.htm?lang=se">Svenska</a></li>
  30. </ul>
  31. </body>
  32. </html>

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 06/12/2010, 08:27
Avatar de echoTREBOR  
Fecha de Ingreso: marzo-2010
Ubicación: Venezuela inc.
Mensajes: 56
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Pulsar fuera y cerrar el menu

Utiliza el Evento blur... que se activa cuando el elemento pierde el enfoque. osea cuando el usuario hace click en cualquier otra parte del DOM.

Ejemplo.

Código Javascript:
Ver original
  1. $('#menutoggle').blur(function(){$('#lngMenu').fadeOut('fast');})
  #3 (permalink)  
Antiguo 06/12/2010, 09:20
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Pulsar fuera y cerrar el menu

Cita:
Iniciado por echoTREBOR Ver Mensaje
Utiliza el Evento blur... que se activa cuando el elemento pierde el enfoque. osea cuando el usuario hace click en cualquier otra parte del DOM.

Ejemplo.

Código Javascript:
Ver original
  1. $('#menutoggle').blur(function(){$('#lngMenu').fadeOut('fast');})
No funciona de la forma que mencionas...

Código Javascript:
Ver original
  1. <script language="javascript">
  2.      $(document).ready(function() {
  3.           $('#menutoggle').click(function() {
  4.                if ($('#lngMenu').is(":hidden"))
  5.                {
  6.                     $('#lngMenu').fadeIn('fast');
  7.                } else {
  8.                     $('#lngMenu').fadeOut('fast');
  9.                }
  10.                return false;
  11.           });
  12.           $('#menutoggle').blur(function(){$('#lngMenu').fadeOut('fast');})
  13.      });
  14.      </script>

¿Alguna idea?

Muchas gracias
  #4 (permalink)  
Antiguo 06/12/2010, 15:01
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Pulsar fuera y cerrar el menu

Soy principiante con jQuery, pero supongo que se hace asi;

Código Javascript:
Ver original
  1. $('body').click(function () {
  2.      $('#lngMenu').fadeOut('fast');
  3. });
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 06/12/2010, 15:44
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Pulsar fuera y cerrar el menu

Cita:
Iniciado por Sourcegeek Ver Mensaje
Soy principiante con jQuery, pero supongo que se hace asi;

Código Javascript:
Ver original
  1. $('body').click(function () {
  2.      $('#lngMenu').fadeOut('fast');
  3. });
Haciendolo así sí que funciona Sourcegeek! pero no se que pasa si tuvieras que definir alguna otra propiedad sobre el elemento 'body' no sé, si al usar el 'body' de esta forma complica las cosas con futuras llamadas.

Alguien nos puede decir si es la forma correcta/adecuada?

Muchas gracias
  #6 (permalink)  
Antiguo 06/12/2010, 16:06
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Pulsar fuera y cerrar el menu

No, no hay problema si hay otra propiedad dentro de <body></body>
Por ejemplo;
<body>
<div id="eje">
Ejemplo
</div>
</body>
Si hago clic en el div 'eje' igual va a cerrar el menu porque es parte de body

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: cerrar, fuera, pulsar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:57.