JQuery: Menü dışına çıktıktan sonra açılan menü açılır

Ben jQuery için yeni ve 'Daha' düğmesini oluşturmak için google'ın koduna bakıyorum. Çalışırken atm var ama bırakmayı ortadan kaldırmanın tek yolu tekrar 'More' düğmesine basmaktır. Bunu değiştirmek için ekleyebileceğim bir yöntem var, böylece açılır menünün dışındaki herhangi bir tıklama kendiliğinden kapanacak mı? Anlayış için teşekkürler!

http://jsfiddle.net/rKaPN/1/

4

4 cevap

Herhangi bir tıklamayı yakalamak için bir tıklama etkinliğini html'ye bağlayın ve menüyü gizleyin

$("html").click(function() {
  menu.find('.active').removeClass('active');
});

Then override that on your menu's click event using .stopPropagation();

menu.find('ul li > a').bind('click', function (event) {
  event.stopPropagation();

Fiddle: http://jsfiddle.net/rKaPN/12/

7
katma
Çok iyi bir çözüm değil çünkü her tıklamada bu menü zaten gizli olduğunda her zaman çok fazla gereksiz iş yapacak
katma yazar Rajat Gupta, kaynak
çok teşekkürler, yardımın değerini takdir et
katma yazar trying_hal9000, kaynak

Bunu da ekleyebilirsiniz, bu yüzden kullanıcının tıklamasına gerek yok

$("body:not(.menu)").hover(function(){ $(".menu").find('.active').removeClass('active');})
1
katma
ben de çok hoşuma gidiyor, def 'a ihtiyacım var.
katma yazar trying_hal9000, kaynak

Menünün açılmasında, pencerenin aynı genişlik ve yüksekliğe sahip saydam kaplama div'u oluşturun. Bu div'a tıkladığınızda menüyü kapatın ve div'u yok edin.

0
katma

Html dom öğesine yapılan her tıklamayı test etmek yerine, bulanıklık olayını tetikledikten sonra etkin duruma getirdiğinizde belirli menü öğesine bir bulanıklık olayı bağlayabilirsiniz. Bu birkaç satırı değiştirin:

  //displaying the drop down menu
  $(this).parent().parent().find('.active').removeClass('active');
  $(this).parent().addClass('active');

bunlarla birlikte:

  //displaying the drop down menu
  $('.active').removeClass('active');
  $(this).parent().addClass('active');
  $(this).blur(function() {
      $('.active').removeClass('active');
  });
0
katma