2010-01-14 8 views

Répondre

1

Vous pouvez ajouter un gestionnaire onclick au document, puis vérifier si la cible de l'événement est le menu ou non. Si le clic est sur le menu, ne rien faire, sinon le cacher.

jQuery(document).click(function(event) { 
    if(event.target==$('context-menu'){ 
    $('context-menu').hide(); 
    $(this).unbind('click'); 
    } 
}): 
+0

Je dois effacer cet auditeur une fois hided. – user198729

+0

Je viens de mettre à jour la réponse pour ajouter le unbind, vous voudrez probablement attacher ce gestionnaire de clic au document chaque fois que le menu contextuel est affiché. –

2

Vous pouvez lier au body.click pour le masquer. Tout événement click sur tout autre élément bulles jusqu'au corps éventuellement:

$('body').click(function() { 
    $('#menu').hide(); 
}); 

exemple ci-dessus est en supposant que votre menu personnalisé a l'ID du « menu ». Remplacer si nécessaire.

En fonction du fonctionnement de votre menu (si vous avez des menus imbriqués, vous pouvez cliquer pour ouvrir), vous pouvez lier quelque chose aux clics à l'intérieur pour arrêter l'événement en utilisant e.stopPropagation();

Pour effacer l'auditeur que vous pouvez faire:

$('body').click(function() { 
    $('#menu').hide(); 
    $(this).unbind('click'); 
}); 
0

Voici un extrait de certains code de travail:

document.onclick = Tree.hideContext; 

    Tree = { 
     hideContext: function() { 
      $("#context").hide(); 
     } 
    }