Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

238
Vistas
Ocultar un DIV cuando pierde el enfoque/desenfoque

Tengo un JavaScript que muestra un DIV (establece su propiedad css de visualización de 'ninguno' a 'normal'. ¿Hay alguna manera de enfocarlo también para que cuando haga clic en otro lugar de la página, DIV pierda el foco y su la propiedad de visualización está configurada en ninguno (básicamente lo oculta). Estoy usando JavaScript y jQuery

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Para ocultar el div al hacer clic en cualquier lugar de la página excepto el div seleccionado

 $(document).not("#selecteddiv").click(function() { $('#selecteddiv').hide(); });

si desea ocultar el div con enfoque perdido o desenfoque con animación, también

 $("#selecteddiv").focusout(function() { $('#selecteddiv').hide(); });

con animación

 $("#selecteddiv").focusout(function() { $('#selecteddiv').animate({ display:"none" }); });

Que esto te ayude

over 4 years ago · Santiago Trujillo Denunciar

0

Desafortunadamente, los ejemplos ya proporcionados no funcionan si tiene un iframe en su sitio y luego hace clic dentro del iframe. Adjuntar el evento al documento solo lo adjuntará al mismo documento en el que se encuentra su elemento.

También puede adjuntarlo a cualquier iframe que esté utilizando, pero la mayoría de los navegadores no le permitirán hacerlo si el iframe ha cargado contenido de otro dominio.

La mejor manera de hacer esto es copiar lo que se hace en el complemento de la barra de menú de jQuery UI.

HTML de ejemplo básico:

 <div id="menu">Click here to show the menu <ul> <li>Item 1</li> <li>Item 2</li> <li><a href="#">Item 3</a></li> </ul> </div>

Y el jQuery necesario para que funcione:

 var timeKeeper; $('#menu').click(function() { $('#menu ul').show(); }); $('#menu ul').click(function() { clearTimeout(timeKeeper); }); $('#menu').focusout(function() { timeKeeper = setTimeout(function() {$('#menu ul').hide()}, 150); }); $('#menu').attr('tabIndex', -1); $('#menu ul').hide();

Lo que hace es darle al menú un índice de pestañas, para que se pueda considerar que tiene foco. Ahora que lo ha hecho, puede usar el controlador de eventos de enfoque en el menú. Esto se disparará cada vez que se considere que ha perdido el foco. Desafortunadamente, hacer clic en algunos elementos secundarios activará el evento de enfoque (por ejemplo, hacer clic en enlaces), por lo que debemos deshabilitar la ocultación del menú si se ha hecho clic en algún elemento secundario.

Debido a que el evento de enfoque se llama antes que el evento de clic de cualquier elemento secundario, la forma de lograrlo es establecer un pequeño tiempo de espera antes de ocultar el elemento, y luego un clic en cualquier elemento secundario debería borrar este tiempo de espera, lo que significa que el menú no obtiene oculto.

Aquí está mi ejemplo jsfiddle de trabajo

over 4 years ago · Santiago Trujillo Denunciar

0

$(document).mouseup(function (e) { var container = $("YOUR CONTAINER SELECTOR"); if (!container.is(e.target)&& container.has(e.target).length === 0) { container.hide(); } });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda