2011-07-21 6 views
1

J'utilise a jquery contextMenu plug-in et j'ai un petit problème que j'essaie de résoudre.Comment fermer un menu contextuel jquery?

Actuellement, lorsque je clique sur mon élément de menu 'supprimer', la fonction que j'appelle demande à l'utilisateur une boîte de confirmation de la fonction deleteTests. À ce stade, le menu contextuel est toujours visible et la boîte de confirmation.

Idéalement, je voudrais fermer le menu contextuel dès que l'utilisateur sélectionne un élément de menu, puis passer à la fonction de suppression.

Cela semble être trivial mais je n'arrive pas à le faire fonctionner.

$(document).ready(function(){ 
    $.contextMenu({selector: '#context-menu', items: { 
    "delete": {name: "Delete", icon: "delete", callback: menu_click }, 
    sep1: "---------", 
    quit: {name: "Quit", icon: "quit", callback: $.noop} 
}}); 

function menu_click(key, opt) { 
    if (key == "delete") { 
    // Need to close menu here 
     deleteTests(); 
    } 
} 
}); 
+0

menu contextuel _Which_ jQuery? Fournir un lien –

+0

désolé à ce sujet: http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/ – Paul

+0

J'ai édité ma réponse. –

Répondre

0

Vous avez raison. Cela devrait être trivial, mais l'auteur n'a pas fourni cette fonctionnalité.

Vous pouvez regarder la source et copier ce que l'auteur a fait lorsque des clics en dehors du menu ont été détectés, mais c'est un hack.


Vous avez de la chance; J'ai fait la même chose avec ce plug-in moi-même.

Ce qui suit va faire, mais rappelez-vous que ce est un hack:

$('.contextMenu').hide(); 
+1

hmm, ça ne marche pas pour moi. Le menu persiste jusqu'à ce que je reconnaisse ma boîte de dialogue de confirmation à partir de la fonction deleteTests(). – Paul

+0

@Paul: Ensuite, vous n'effectuez pas cette ligne de code avant d'ouvrir la boîte de dialogue de confirmation. –

+0

voici mon code actuel: \t fonction menu_click (clé, opt) { \t $ ('. ContextMenu'). Hide(); \t si (clé == "delete") { \t \t deleteTests(); \t} \t} – Paul

4

Vous pouvez essayer de déclencher contextmenu:hide

$('.context-menu-list').trigger('contextmenu:hide') 
+0

Parfait, je t'aime. –

+0

Cela semble être la bonne réponse, selon la documentation: https://swisnl.github.io/jQuery-contextMenu/docs/events.html#contextmenuhide. L'autre réponse utilisant $ ('. ContextMenu'). Hide() le laisse dans le DOM. – Andrew

+0

Ceci devrait être marqué comme la bonne réponse. $ ('. contextMenu'). hide() ne fait que rendre visible le menu 'caché' mais le menu est toujours là! – Metafr

Questions connexes