Kaip aptikti paspaudimą už elemento ribų?

Turiu keletą HTML meniu, kurie visiškai rodomi, kai naudotojas spusteli šių meniu antraštę. Norėčiau šiuos elementus paslėpti, kai naudotojas spusteli už meniu' srities ribų.

Ar kažkas panašaus įmanoma su jQuery?

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

PASTABA: Reikėtų vengti naudoti stopEventPropagation(), nes tai sutrikdo įprastą įvykių srautą DOM. Daugiau informacijos rasite šiame straipsnyje. Apsvarstykite galimybę vietoj to naudoti šį metodą

Prie dokumento korpuso prisekite paspaudimo įvykį, kuris uždaro langą. Prie konteinerio prisekite atskirą paspaudimo įvykį, kuris sustabdo skleidimą į dokumento korpusą.

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

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

Turiu programą, kuri veikia panašiai kaip Erano pavyzdys, išskyrus tai, kad atidarant meniu prie kūno pridedu paspaudimo įvykį... Šiek tiek panašiai:

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

  event.stopPropagation();
});

Daugiau informacijos apie jQuery's one() funkciją

Komentarai (7)

Patikrinkite lango paspaudimo įvykio tikslą (jis turėtų būti perduodamas į langą, jei nėra užfiksuotas niekur kitur) ir įsitikinkite, kad tai nėra joks meniu elementas. Jei taip nėra, vadinasi, esate už meniu ribų.

Arba patikrinkite paspaudimo padėtį ir įsitikinkite, ar ji'yra meniu srityje.

Komentarai (0)