Hvordan oppdager jeg et klikk utenfor et element?

Jeg har noen HTML-menyer, som jeg viser helt når en bruker klikker på hodet på disse menyene. Jeg vil gjerne skjule disse elementene når brukeren klikker utenfor menyområdet.

Er noe slikt mulig med jQuery?

$("#menuscontainer").clickOutsideThisElement(function() {
    // Hide the menus
});
Løsning

MERK: Bruk av stopEventPropagation() er noe som bør unngås da det bryter normal hendelsesflyt i DOM. Se denne artikkelen for mer informasjon. Vurder å bruke denne metoden i stedet.

Knytt en klikkhendelse til dokumentets brødtekst som lukker vinduet. Knytt en egen klikkhendelse til containeren som stopper forplantningen til dokumentets brødtekst.

$(window).click(function() {
//Hide the menus if visible
});

$('#menucontainer').click(function(event){
    event.stopPropagation();
});
Kommentarer (30)

Jeg har en applikasjon som fungerer på samme måte som Eran&# 39s eksempel, bortsett fra at jeg knytter klikkhendelsen til kroppen når jeg åpner menyen ... Litt som dette:

$('#menucontainer').click(function(event) {
  $('html').one('click',function() {
    // Hide the menus
  });

  event.stopPropagation();
});

Mer informasjon om jQuery' s one()-funksjon

Kommentarer (7)

Kontroller hendelsesmålet for vindusklikk (det skal forplante seg til vinduet, så lenge det ikke er fanget opp noe annet sted), og sørg for at det ikke er noen av menyelementene. Hvis det ikke er det, er du utenfor menyen din.

Eller sjekk posisjonen til klikket, og se om det er innenfor menyområdet.

Kommentarer (0)