Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

188
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda