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

182
Vistas
¿Cómo puedo resolver una colisión entre dos eventos, hacer clic afuera y en el botón para cerrar un menú en un kit esbelto?

Tengo un problema en svelteKit con una colisión. El botón abre el menú pero cuando trato de cerrarlo, no lo hace. Cuando hago clic fuera del botón, se activa 'handleClickOutside', que llama a 'clickOutside.js' y luego cierra el menú.

Creo que el problema es que 'element.contains' incluye el botón y por eso el menú no se cerró.

sin embargo, no pude arreglarlo.

Estoy usando tailwindUI, tailwindCSS, SvelteKit.

¡Gracias por tus comentarios!

( Imagen )

índice.esbelto

 <script> // @ts-nocheck import bostonLogo from '../../img/bostonLogo.png'; import { clickOutside } from '../../lib/clickOutside'; // Example Profile let profile = { name: 'Matias', lastName: 'Barletta' }; // Show/Hide Menu let menu = false; // COLLISION WITH HANDLENAV function handleClickOutside(event) { menu = false; } function handleNav() { menu = !menu; } </script> <div> <!-- Static sidebar for desktop --> <div class=" md:flex md:w-64 md:flex-col md:fixed md:inset-y-0" class:hidden={!menu}> <!-- Sidebar component, swap this element with another sidebar if you like --> <div use:clickOutside on:click_outside={menu? handleClickOutside : ''} class:absolute={menu} class:mt-11={menu} class="md:flex-1 md:flex md:flex-col md:min-h-0 bg-gray-800" > ...

clickOutside.js

 // @ts-nocheck /** Dispatch event on click outside of element */ // @ts-ignore export function clickOutside(element) { // @ts-ignore const handleClick = (event) => { console.log(event.target, document.body) // element exist?, element contain where i did click, preventDefault = false? if (element && !element.contains(event.target) && !event.defaultPrevented) { element.dispatchEvent( // Dispatch and create new custom event. new CustomEvent('click_outside', element) ); } }; // add eventlistener when you click on document document.addEventListener('click', handleClick, true); return { destroy() { document.removeEventListener('click', handleClick, true); } }; }
about 4 years ago · Juan Pablo Isaza
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