Kā noteikt klikšķi ārpus elementa?

Man ir dažas HTML izvēlnes, kuras pilnībā parādās, kad lietotājs noklikšķina uz šo izvēlņu galvenes. Es vēlētos paslēpt šos elementus, kad lietotājs noklikšķina ārpus izvēlņu' zonas.

Vai kaut kas tāds ir iespējams ar jQuery?

$("#menuscontainer").clickOutsideThisElement(function() {
    // Hide the menus
});
Risinājums

PIEZĪME: Jāizvairās no stopEventPropagation() izmantošanas, jo tā pārtrauc normālu notikumu plūsmu DOM. Plašāku informāciju skatiet šajā rakstā. Apsveriet iespēju tā vietā izmantot šo metodi.

Pievienojiet dokumenta korpusam klikšķa notikumu, kas aizver logu. Pievienojiet atsevišķu klikšķa notikumu konteineram, kas pārtrauc izplatīšanos uz dokumenta korpusu.

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

$('#menucontainer').click(function(event){
    event.stopPropagation();
});
Komentāri (30)

Man ir lietojumprogramma, kas darbojas līdzīgi kā Eran's piemērs, izņemot to, ka es pievienoju klikšķa notikumu ķermenim, kad es atveru izvēlni... Gluži kā šeit:

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

  event.stopPropagation();
});

Vairāk informācijas par jQuery's one() funkciju

Komentāri (7)

Pārbaudiet loga klikšķa notikuma mērķi (tam vajadzētu izplatīties uz logu, ja vien tas nav fiksēts citur) un pārliecinieties, ka tas nav neviens no izvēlnes elementiem. Ja tas tā nav, tad jūs esat ārpus savas izvēlnes.

Vai arī pārbaudiet klikšķa pozīciju un pārliecinieties, vai tas atrodas izvēlnes apgabalā.

Komentāri (0)