Question

Je suis relativement nouveau dans Jquery et JSON et c’est mon premier message ici. Veuillez le supporter.

J'ai une chaîne de menu JSON avec un tableau de trois éléments (nom, URL, identifiant - notre numéro d'identification de page interne) et la navigation de niveau supérieur se déroule correctement. Je parcours les éléments de niveau supérieur et appelle une fonction récursive pour obtenir les sous-menus.

Ce que j'essaie de faire maintenant se trouve dans une partie séparée de la page Web. Utilisez la chaîne de menu JSON pour rechercher une page de niveau supérieur (news.aspx, par exemple) et créez un menu pour cette page et son sous-menu. éléments à afficher dans une navigation à gauche qui ne doivent être affichés que sur les pages d'actualités.

Le problème que je rencontre est que ce script ci-dessous fonctionne sans erreur Javascript. Cependant, il tire la navigation de haut niveau. La navigation de niveau supérieur s’appelle essentiellement de la même manière, à l’exception des fonctions CreateMenu () et CreateMenuRecursive ().

Une partie du code que j'utilise ici provient de la lecture d'autres publications sur ce site, mais je n'ai pas trouvé de réponse à cette question. Merci d'avance pour votre aide.

<div id="LeftNavDiv">&nbsp;</div> 

<script type="text/javascript">
$(function(){   
var sidemenuString = CreateSideMenu();
$("#LeftNav").html(sidemenuString);
});

function CreateSideMenu(){
$.get("menu");
var sidenavHTML = new Sys.StringBuilder();
for(var i=0; i < menu.MenuItem.length; i++){
    if(menu.MenuItem[i].id == 'a123456'){
        CreateSideMenuRecursive(menu.MenuItem[i],sidenavHTML);
    }
}
return sidenavHTML.toString();
}

function CreateSideMenuRecursive(item, outputHTML){
if(item.MenuItem == null || item.MenuItem.length == 0)
return;

outputHTML.append("<ul>");
for(var i=0; i < item.MenuItem.length; i++){
    if(item.MenuItem[i].id == CurrentPageID){
        outputHTML.append("<li><a href='" + item.MenuItem[i].url + "'>" + item.MenuItem[i].label + "</a>");
    } 
    CreateSideMenuRecursive(item.MenuItem[i], outputHTML);
    outputHTML.append("</li>");
}
outputHTML.append("</ul>");
}
</script>
Était-ce utile?

La solution

En fin de compte, je compliquais beaucoup les choses. Tout ce que je devais faire était de trouver le href (news.aspx) dans la chaîne de menu JSON et d’obtenir le sous-menu. J'ai pris ce que j'avais ci-dessus et l'ai résumé en quelques lignes de code:

<div id="LeftNavDiv"></div>
<script type="text/javascript">
$(function(){   
var sidemenu = $("a[href$='news.aspx']").next("ul").get();
$("#LeftNavDiv").html(sidemenu);    
});
</script>

Il crée dynamiquement cette liste div et non ordonnée en tirant même le style, c.-à-d. "menu-top". depuis la chaîne de menu JSON:

<div id="LeftNavDiv">
    <ul>
        <li class="menu-top"/>
        <li><a href="sandbox1.aspx">Lorem ipsum</a></li>
        <li class="menu-bot"/>
   </ul>
</div>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top