Kuidas tuvastada klõpsu väljaspool elementi?

Mul on mõned HTML-menüüd, mida ma näitan täielikult, kui kasutaja klõpsab nende menüüde päises. Tahaksin neid elemente peita, kui kasutaja klõpsab väljaspool menüüd' ala.

Kas midagi sellist on võimalik jQuery abil?

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

MÄRKUS: stopEventPropagation() kasutamist tuleks vältida, kuna see katkestab normaalse sündmuste liikumise DOMis. Lisateavet vt see artikkel. Kaaluge selle asemel selle meetodi kasutamist.

Kinnitage dokumendi kehale klõpsu sündmus, mis sulgeb akna. Kinnitage konteinerile eraldi klõpsusündmus, mis peatab leviku dokumendikorpusesse.

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

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

Mul on rakendus, mis töötab sarnaselt Eran's näide, kuid ma kinnitan klõpsu sündmuse keha, kui ma avan menüü... Umbes nii:

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

  event.stopPropagation();
});

Lisateave jQuery's one() funktsiooni kohta

Kommentaarid (7)

Kontrollige akna klõpsu sündmuse sihtmärki (see peaks levima aknale, kui see ei ole kuskil mujal jäädvustatud) ja veenduge, et see ei ole mõni menüüelement. Kui see ei ole, siis olete väljaspool oma menüüd.

Või kontrollige klõpsu asukohta ja vaadake, kas see's sisaldub menüüpiirkonnas.

Kommentaarid (0)