Je viens d'obtenir une correction sur un autre post que je viens de faire mais cela a créé un autre problème. Je travaille sur un menu de navigation avec plusieurs niveaux. Voici le script que je me sers:JQuery Problème de menu
$(document).ready(function(){
// attach the click handler for the menu
$(".left-navigation-holder li a[href='']:has(~ul)").click(toggleMenu);
// Expand menu for the current page:
var level1Selector = "#" + $("body").attr("menul1");
var level2Selector = "#" + $("body").attr("menul2");
var level3Selector = "#" + $("body").attr("menul3");
$(".left-navigation-holder li a:has(~ul"+ level1Selector +")").click();
$(".left-navigation-holder li a:has(~ul"+ level2Selector +")").click();
$(".left-navigation-holder li a:has(~ul"+ level3Selector +")").click();
});
// menu toggle function
function toggleMenu() {
//if ($(this).attr(href='#')) {alert("yes")} else {alert("no")}
$(this).siblings("ul").toggle();
$(this).closest("li").toggleClass("selected");
return false;
}
La première ligne Initié le menu en disant que s'il y a un événement de clic sur un lien dans le menu et si ce lien a un attribut vide href et une liste plus bas , puis il déclenche toggleMenu pour ouvrir ce niveau. La raison de vérifier la valeur de href est que si elle est vide, le menu s'ouvre, sinon elle envoie l'utilisateur à la valeur de l'URL et ne bascule pas le menu. Cela laisse l'option d'avoir un lien de page pour certains menus (et de garder des sous-niveaux) lorsque d'autres sont juste là pour basculer le sous-menu.
L'autre partie du script lit les valeurs des attributs que j'ai définis dans la balise body sur chaque page (menul1, menul2, menul3) pour savoir sur quelle page du menu nous sommes afin que le menu ouvre le bon menu niveaux lorsque la page se charge. Le problème que j'ai est que parce que la première ligne vérifie la valeur de l'attribut href, si la page chargée a été appelée en cliquant sur un menu qui avait un lien et un sous-menu, celui-ci ne s'ouvre pas lors du chargement du page parce que le href a une valeur. Les 3 lignes qui initiaient chaque niveau ne fonctionnent maintenant que lorsque la valeur href est vide.
Vous ne savez pas quoi faire. L'aide serait appréciée. J'espère que c'était assez clair.
Merci!
J'ai essayé cela: $ (". Left-navigation-holder li a: a (~ ul" + level1Selector + ")"). ToggleMenu(); Cela n'a pas fonctionné. J'ai une erreur – Ben
d'accord, je l'ai réparé. J'ai ajouté une ligne pour lancer un autre événement, charger: $ (". Left-navigation-holder li a: a (~ ul)"). Load (toggleMenu); Ensuite, j'ai utilisé la fonction load() pour vérifier les attributs dans le corps: $ (". Left-navigation-holder li a: a (~ ul" + menuSelector + ")"). Load(); – Ben