Me gustaría saber si esta es la forma correcta de ocultar elementos visibles cuando se hace clic en cualquier parte de la página.
$(document).click(function (event) {
$('#myDIV:visible').hide();
});
El elemento (div, span, etc.) no debería desaparecer cuando se produce un evento de clic dentro de los límites del elemento.
jquery
events
event-bubbling
Franek
fuente
fuente
.myDiv
elemento. Por ejemplo, si tiene un menú desplegable de selección dentro.myDiv
. Cuando haga clic en seleccionar, pensará que está haciendo clic fuera del cuadro.Prueba esto
Utilizo el nombre de la clase en lugar de la identificación , porque en asp.net tienes que preocuparte por las cosas adicionales que .net adjunta a la identificación
EDITAR- Dado que agregó otra pieza, funcionaría así:
fuente
A partir de jQuery 1.7 hay una nueva forma de manejar eventos. Pensé que respondería aquí solo para demostrar cómo podría hacer esto de la "nueva" forma. Si no lo ha hecho, le recomiendo que lea los documentos de jQuery para el método "on" .
Aquí estamos abusando de los selectores de jQuery y el burbujeo de eventos. Tenga en cuenta que me aseguro de limpiar el controlador de eventos después. Puede automatizar este comportamiento con
$('.container').one
( ver: documentos ) pero porque necesitamos hacer condicionales dentro del controlador que no se aplican aquí.fuente
Este siguiente ejemplo de código parece funcionar mejor para mí. Si bien puede usar 'return false' que detiene todo el manejo de ese evento para el div o cualquiera de sus hijos. Si desea tener controles en el div emergente (un formulario de inicio de sesión emergente, por ejemplo), debe usar event.stopPropogation ().
fuente
Gracias, Thomas. Soy nuevo en JS y he estado buscando locamente una solución a mi problema. El tuyo ayudó.
He usado jquery para hacer un cuadro de inicio de sesión que se desliza hacia abajo. Para una mejor experiencia de usuario, decidí hacer desaparecer el cuadro cuando el usuario hace clic en algún lugar que no sea el cuadro. Me da un poco de vergüenza usar unas cuatro horas para arreglar esto. Pero bueno, soy nuevo en JS.
Quizás mi código pueda ayudar a alguien:
fuente
Lo que también puedes hacer es:
Si su objetivo no es un div, oculte el div comprobando que su longitud sea igual a cero.
fuente
Hice lo siguiente. Pensé en compartir para que otra persona también pudiera beneficiarse.
Avísame si puedo ayudar a alguien en esto.
fuente
div#newButtonDiv
no se hace clic. Le recomendaría que elimine el segundo.click()
en la línea 4 (si hace esto, recuerde eliminar las llaves de cierre, el paréntesis y el punto y coma - línea 9).Prueba esto:
fuente
Otra forma de ocultar el div contenedor cuando ocurre un clic en un elemento no secundario;
fuente
Aquí #suggest_input in es el nombre del cuadro de texto y .suggest_container es el nombre de la clase ul y .suggest_div es el elemento div principal para mi sugerencia automática.
este código es para ocultar los elementos div haciendo clic en cualquier parte de la pantalla. Antes de hacer todo, comprenda el código y cópielo ...
fuente
Prueba esto, funciona perfecto para mí.
fuente
pero también debes tener en cuenta estas cosas. http://css-tricks.com/dangers-stopping-event-propagation/
fuente
Aquí hay una solución CSS / JS pequeña en funcionamiento basada en la respuesta de Sandeep Pal:
Pruébelo haciendo clic en la casilla de verificación y luego fuera del menú:
https://jsfiddle.net/qo90txr8/
fuente
Esto no funciona, oculta el .myDIV cuando hace clic dentro de él.
fuente
Solo 2 pequeñas mejoras a las sugerencias anteriores:
detener la propagación en el evento que desencadenó esto, asumiendo que es un clic
fuente
fuente
fuente
fuente
Solución simple: oculte un elemento en un evento de clic en cualquier lugar fuera de algún elemento específico.
fuente