Ako zistím kliknutie mimo prvku?

Mám niekoľko ponúk HTML, ktoré sa úplne zobrazia, keď používateľ klikne na záhlavie týchto ponúk. Chcel by som tieto prvky skryť, keď používateľ klikne mimo oblasti menu'.

Je niečo také možné pomocou jQuery?

$("#menuscontainer").clickOutsideThisElement(function() {
    // Hide the menus
});
Riešenie

POZNÁMKA: Používaniu funkcie stopEventPropagation() sa treba vyhnúť, pretože narúša normálny tok udalostí v DOM. Viac informácií nájdete v tomto článku. Namiesto toho zvážte použitie tejto metódy

Pripojte k telu dokumentu udalosť kliknutia, ktorá zatvorí okno. Pripojte samostatnú udalosť kliknutia na kontajner, ktorá zastaví šírenie do tela dokumentu.

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

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

Mám aplikáciu, ktorá funguje podobne ako Eranov príklad, ale pri otváraní menu pripájam udalosť kliknutia na telo... Takto nejako:

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

  event.stopPropagation();
});

Viac informácií o funkcii jQuery's one()

Komentáre (7)

Skontrolujte cieľ udalosti kliknutia na okno (mala by sa šíriť do okna, pokiaľ nie je zachytená nikde inde) a uistite sa, že to nie je žiadny z prvkov ponuky. Ak nie je, potom ste mimo menu.

Alebo skontrolujte pozíciu kliknutia a zistite, či je obsiahnuté v oblasti ponuky.

Komentáre (0)