2010-08-31 5 views
0

Je suis en quelque sorte bloqué sur un problème de la façon d'arrêter mon menu d'exécuter la fonction fadeOut(). Lorsque je clique sur les liens principaux de mon menu pour ouvrir le sous-menu, il disparaît. Voici comment le code regarde le moment:Comment écrire "si non cliqué" ou "si cliqué sur l'élément extérieur", en utilisant Jquery?

$('a.main-menu-item').click(function(){ 

    if($('.rtmenu:visible')){ 

     $('.rtmenu').click(function(e) { e.stopPropagation(); }); 

     $(document).click(function() { 
      $('.rtmenu').fadeOut(200); 
     }); 
    } 
}) 

Quelqu'un peut-il me dire comment je peux écrire « si pas cliqué sur A.main-menu-item » où il est dit « document »?

Beaucoup Apprécié


solution n'a été trouvée!

$('.rtmenu').click(function(e) { e.stopPropagation(); }); 
$('.rtmenu').mouseout(function(){ 
    $(document).one('click',function() { $('.rtmenu').fadeOut(200); }); 
}) 
+1

voir ce http://stackoverflow.com/questions/152975/how-to-detect-a-click-outside-an-element –

Répondre

1

Jetez un oeil à Ben Alman "outside events" plugin. Il vous permet de définir une série d'événements, pas seulement de cliquer sur des événements. Avec lui, votre code ressemblerait à quelque chose comme ceci:

$('.rtmenu').bind('clickoutside', function() { 
    $(this).fadeOut(200); 
}); 

En aparté, vous ne devriez pas mettre en place la liaison à l'intérieur de l'événement, cliquez pour le menu, ce joindra un autre gestionnaire à chaque fois que l'option de menu est cliqué . Votre code devrait être remplacer par quelque chose comme:

$('a.main-menu-item').click(function(){ 
    // Show menu item 
}); 
$('.rtmenu').bind('clickoutside', function() { 
    $(this).fadeOut(200); 
}); 
+0

Désolé, cela n'a pas fonctionné – Nasir

+0

@Nasir: alors vous ne l'utilisez probablement pas correctement. J'ai ajouté un exemple à mon message. –

+0

Ouais dites-moi à ce sujet ... J'essaie d'intégrer ASP Classic ... Fuckin blague. Est-il impossible de changer le 'document' dans mon code existant? – Nasir

0

utilisation événement blur pour gérer la perte de mise au point. This pourrait également aider.

+0

Désolé, ce n'a pas travail – Nasir

Questions connexes