Bir öğenin dışındaki bir tıklamayı nasıl algılarım?

Bir kullanıcı bu menülerin başına tıkladığında tamamen gösterdiğim bazı HTML menülerim var. Kullanıcı menüler alanının dışına tıkladığında bu öğeleri gizlemek istiyorum.

jQuery ile böyle bir şey mümkün mü?

$("#menuscontainer").clickOutsideThisElement(function() {
    // Hide the menus
});
Çözüm

NOT: stopEventPropagation() işlevini kullanmak, DOM'daki normal olay akışını bozduğu için kaçınılması gereken bir şeydir. Daha fazla bilgi için bu makaleye bakın. Bunun yerine bu yöntemi kullanmayı düşünün

Pencereyi kapatan belge gövdesine bir tıklama olayı ekleyin. Kapsayıcıya, belge gövdesine yayılmayı durduran ayrı bir tıklama olayı ekleyin.

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

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

Eran'ın örneğine benzer şekilde çalışan bir uygulamam var, ancak menüyü açtığımda tıklama olayını gövdeye ekliyorum... Bunun gibi bir şey:

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

  event.stopPropagation();
});

jQuery'nin one() fonksiyonu]1 hakkında daha fazla bilgi

Yorumlar (7)

Pencere tıklama olayı hedefini kontrol edin (başka bir yerde yakalanmadığı sürece pencereye yayılmalıdır) ve menü öğelerinden herhangi biri olmadığından emin olun. Eğer değilse, o zaman menünüzün dışındasınız demektir.

Ya da tıklamanın konumunu kontrol edin ve menü alanı içinde olup olmadığına bakın.

Yorumlar (0)