Menu contextuel déroulant à plusieurs niveaux
-
28-10-2019 - |
Question
Je crée un plugin de menu contextuel (clic droit) pour jQuery, et cela fonctionne très bien pour le premier niveau.Mais j'en ai besoin pour avoir des niveaux infinis.J'ai déjà la récursion vers le bas, mais je pense que c'est un problème avec l'affichage / le masquage.Voici mon code, pour l'instant: http://jsfiddle.net/H7GqA/4/ (Désolépour le code désordonné, le plugin est pour moi).L'élément de deuxième niveau n'apparaît jamais et je ne suis pas sûr de ce que je fais de mal.
Merci d'avance - Tanner.
La solution
Vous avez display:none
sur les éléments .submenu
et vous ne faites rien pour les afficher.
Si vous voulez qu'ils soient toujours actifs, ajoutez la règle suivante
#ContextMenu .submenu {
display:block;
}
si vous voulez le faire en survolant leur parent, faites
pour les navigateurs modernes
#ContextMenu .item:hover > .submenu {
display:block;
}
Je vois que vous avez ce code
cm.find(".item:has(.submenu)").hover(function(){
//$(this).find("ul").css('display', 'block');
//alert('blabla_1');
$(this).css('background-color', 'red');
});
cela devrait fonctionner ( si vous décommentez la première ligne ) et déplacez ce code dans la fonction doMain
.Parce que là où vous l'avez actuellement, l'élément #ContextMenu
n'existe pas encore .. donc la liaison ne se produit pas ..